On Feb 15, 2011, at 10:11 PM, Charles Lepple wrote: > On Feb 15, 2011, at 5:50 PM, Daniel Johnson wrote: > >> I've been working on implementing selfupdate-git and have something that >> people can play with if they'd like. (You'll need git installed for this, of >> course.) >> >> git clone git://github.com/danielj7/fink.git >> cd fink >> git checkout selfupdate # that's where my branch is >> ./bootstrap /sw-git # or wherever you want you fink to be installed. >> PLEASE don't use your main /sw >> >> You then need to run 'fink selfupdate-git' but there is something you need >> to do first. The selfupdate-git command will first look for >> $basepath/bin/git (say /sw-git/bin/git) then /usr/bin/git (since a future OS >> might come with it). If it finds neither, it'll quit, telling you to 'fink >> install git'. You can also set GitPath in fink.conf to another git, say in >> your main /sw, to override what fink guesses. Whatever fink finally chooses >> will be saved in GitPath and used from then on so that the same version is >> always used. > > I'm still a little new at the whole Fink bootstrap process, but at first I > missed the detail that $basepath is *not* the checked-out git working copy. > No worries, just a hint for others trying this for the first time.
Yeah, sorry, that's the directory that fink was bootstrapped into. It's what fink's internal code uses and I wasn't clear. > >> Once you've used selfupdate-git once, regular selfupdate will continue >> pulling updates with git. Note that it's currently set to use my copy of the >> fink/dists repo at http://github.com/danielj7/fink-dists.git. This is NOT an >> official repo so don't trust it for normal use. I'm keeping it updated from >> the cvs one, though I'm running the update manually when I notice changes. >> Since it's my repo, you can't get read/write access to it, of course. :) So >> always pick anonymous access when fink asks. Also try switching between the >> different selfupdate methods to make sure switching works. It seems to in my >> testing. > > Just for fun, I tried cloning ("forking") your repo. Is there a way to > specify another repo up front, or should I just add my clone as a remote > later? (I don't mind rebasing any local changes if you decide to blow yours > away and re-import.) You would either need to hack the git.pm file to change the $gitrepository variable or create the files $basepath/lib/fink/URL/anonymous-git and/or $basepath/lib/fink/URL/developer-git (where $basepath is the directory fink was installed into) which would contain the URL of your repo. The contents of those files override the default values. > Also, is there an equivalent of git-svn's "dcommit" where I could make > changes in my local Git repository, then commit back to the upstream non-Git > repository? or are the git-to-cvs tools import only? There is 'git cvsexportcommit' which can export a git commit to a cvs repo but I haven't really tried it in this case. There's a fink package called gcutils which makes this a bit easier by keeping a cvs checkout embedded in the git clone but I have no idea how that would integrate with selfupdate-git. > This small issue might be related to not following your directions on > choosing "anonymous", but using the default verbosity settings, I get this > error when running "fink selfupdate-git" for the first time: > > ... > Checking to see if we can use hard links to merge the existing tree. Please > ignore errors on the next few lines. > Setting up base Fink directory... > /usr/bin/su clepple -c '/sw/bin/git --quiet clone > g...@github.com:danielj7/fink-dists.git fink' > Unknown option: --quiet > usage: git [--version] [--exec-path[=<path>]] [--html-path] > [-p|--paginate|--no-pager] [--no-replace-objects] > [--bare] [--git-dir=<path>] [--work-tree=<path>] > [-c name=value] [--help] > <command> [<args>] > ### execution of /usr/bin/su failed, exit code 129 > Failed: Downloading package descriptions from git failed. Yeah, looks like I need to change the order of the flags. My bad. I just pushed a fix for that. >> I've also updated my preliminary selfupdate-svn command to work using the >> same repo too. I'm not sure how useful it is since GitHub supports git over >> http. It does mean that people with 10.5 and later don't need to install >> anything else but it's MUCH slower than git. >> >> Another thing to note is that unlike cvs (or svn) git doesn't allow you to >> checkout one directory within a repo; it's all or nothing. That means that >> selfupdate-git (and -svn since it's using the git repo) ignores the >> SelfupdateTrees setting and downloads all the trees. We could certainly >> remove the old trees in the final repo, but I left them in for now so we get >> all the history. > > Thinking about the bootstrapping case (10.5 and later), would it be difficult > to have the -svn option just check out the current tree? That could help > speed things up. Or is the speed issue on the GitHub side, since the SVN > proxy server would have to virtually check out the git tree? No, because GitHub's svn support only allows you to access the whole directory, not a subdirectory. It's a limitation of GitHub. If a svn repo were hosted elsewhere, we could do this, but I don't think it's worth it. Then we'd need to keep them synchronized. > If I understand the "point release" selfupdate method, would it be possible > to just create a new point release that includes the git.info file? Possible? Yes. Likely? Probably not since there isn't even a 10.6 point release. The whole point release system has been effectively abandoned since Fink doesn't have the resources to keep up with it. It's not even possible to switch to selfupdate-point after switching to another one. Also, all of git's dependencies would need to be there too, and while I've drastically slimmed it down, it still has a handful. BTW, the slimmed-down git 1.7.4.1 is now in stable as well as unstable to make it easier to get. > Let me know if there's anything else that you would like help testing. You've already been very helpful, thanks! I appreciate all input. We have no idea how long sf.net will continue to support CVS, so we need to do something to get ready. Daniel ------------------------------------------------------------------------------ The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE: Pinpoint memory and threading errors before they happen. Find and fix more than 250 security defects in the development cycle. Locate bottlenecks in serial and parallel code that limit performance. http://p.sf.net/sfu/intel-dev2devfeb _______________________________________________ Fink-devel mailing list Fink-devel@lists.sourceforge.net http://news.gmane.org/gmane.os.apple.fink.devel Subscription management: https://lists.sourceforge.net/lists/listinfo/fink-devel