On Jun 13, 2013, at 8:23 PM, Alexander Hansen <alexanderk.han...@gmail.com> wrote:
> I'd like to try to move forward on getting the distribution files moved > over to git. Right now there is a selfupdate-git branch on fink's > github repository, but I don't know where we stand on functionality. > Last time I used it I was able to update from Daniel J's dists/ mirror, > but I didn't try operations like checking in updates and the like. > You wouldn't be able to check in anything with it; it's read-only. :) > Max had proposed at one point using git branches to handle distributions > instead of the current separate directory trees. Unfortunately, I don't > know if at our current manpower levels (especially manpower with > sufficient knowledge of git) will allow us to implement this in a timely > manner. We definitely are going to want to get _something_ in place. > I looked at doing a repo using branches; converting the repo is easy but there would have to be a number of changes throughout the fink code to deal with it. It would also break our use of rsync since rsync doesn't understand branches. We would have to completely redo the rsync mirroring code to check out each branch and create a copy each. > Daniel, if you could reply to this to let folks know how to translate > the existing CVS repository so that folks can set up their own github > copies of it to test the ability to check updates in and the like, > that'd be great. Ok, here are the steps to make your very own git conversion. I've found that the only reliable way to convert is with the cvs2git tool which is part of the cvs2svn project. You can install it with fink by using the cvs2svn-py27 package. The disadvantage of using cvs2git is that it can't do incremental updates of a converted repo. However, once the initial conversion is done, one can use 'git cvsimport' to do incremental updates. That's how I keep my mirror up-to-date. To use cvs2git, you need an actual copy of the cvs repo, not a checked out working copy. You can do that with rsync -av rsync://fink.cvs.sourceforge.net/cvsroot/fink/dists /path/to/fink-rsync Next you'll need my customized cvs2git options file which is attached at the end of this email. You must edit the text '/Users/daniel/src/fink-rsync/dists' in it to point to whatever you used for /path/to/fink-rsync. Now run the command thusly: cvs2git --options=cvs2git-fink-dists.options That command should have created a directory called cvs2svn-tmp with two files in it: git-blob.dat and git-dump.dat. Next create an empty git repo: mkdir fink-dists.git cd fink-dists.git git init Then we import the converted repo into git! cat ../cvs2svn-tmp/git-blob.dat ../cvs2svn-tmp/git-dump.dat | git fast-import Now we want to cleanup any tag fixup branches that might have been created by running /sw/share/doc/cvs2svn-py27/git-move-refs.py from within the repo. Compact the new repo with 'git gc --prune=now' and checkout a working copy with 'git checkout'. And now you should have a complete dists repo in git! Setting things up for incremental updates is a bit more complicated but I can go into it in another email. This should be enough to play around with though. You wouldn't want to keep updating it anyway if you want to play around with checking in updates via git. To use your new repo with fink's selfupdate-git, you'll need to upload it to your own github account or wherever else you want, and also have to edit the git.pm file to point to your own repo instead of mine. Daniel ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ Fink-devel mailing list Fink-devel@lists.sourceforge.net List archive: http://news.gmane.org/gmane.os.apple.fink.devel Subscription management: https://lists.sourceforge.net/lists/listinfo/fink-devel