#16373: svn git and hg fetch type should maintain a persistent working copy ---------------------------+-------------------------------- Reporter: ryandesign@… | Owner: macports-tickets@… Type: enhancement | Status: new Priority: Normal | Milestone: MacPorts Future Component: base | Version: 1.7.0 Resolution: | Keywords: performance fetch Port: | ---------------------------+-------------------------------- Comment (by mojca@…): Replying to [comment:13 cal@…]:
Keeping a (bare repo) clone of the whole thing would speed up fetching even after a port is updated, though. Packaging tarballs wouldn't.
Yes, that would be a huge benefit over tarballs.
Also we can't easily avoid the git dependency because by the time the fetch phase is started we wouldn't know whether our mirrors already had a generated tarball or we'd have to fetch from git.
I don't think that getting rid of the dependency on git would be of any substantial benefit.
I guess getting this implemented using bare clones wouldn't be so hard after all. For git, you'd have to - generate a unique identifier from the repository URL (e.g. using a hash function) - test whether $cachedir/$identifier is a valid git repository - create a bare clone if it isn't, run git fetch if it is - export the version/revision/tag you need from $cachedir/$identifier into $worksrcdir.
I would also suggest to add/check the SHA sum of the commit (even when dealing with tags) just to be on the safe side.
I think that's actually easier to implement than getting the mirroring stuff you propose into the scripts that update our distfile mirrors.
I'm too clumsy when it comes to tcl (I've learnt to handle the `Portfiles`, but changing anything in base is still too complex for me). I would be thrilled if someone would be willing and able to implement this. Once that gets implemented – how would you handle GitHub and BitBucket from that point on? And how would you handle situations when the servers go offline? Would you mirror the bare repository on one of MacPorts servers? (This is of course less important.) -- Ticket URL: <https://trac.macports.org/ticket/16373#comment:14> MacPorts <http://www.macports.org/> Ports system for OS X