-=| Joey Hess, Fri, Jan 25, 2008 at 01:17:27PM -0500 |=- > Damyan Ivanov wrote: > * Create a branch for the change. [...] Great. Thanks for educating me :) > > TTBOMLK (L=limited), git-svn can't help us here as we use a repository > > structure that is not that straight-forward. git-svn works best with: > > $SVN/ trunk/ (here the main line of development goes) > > branches/ (branches, one directory per branch) > > tags/ (and tags, one directory per tag) > > that is: one trunk, one place for all branches, one place for all > > tags. > > > > and we have (ignoring the multi-package "detail"): > > $SVN/ trunk/ (same as above) > > branches/ > > upstream/ > > current/ (here's the "HEAD" of the upstream branch) > > 1.01/ (and these are "tags" of it) > > 1.02/ > > 2.00/ > > other branch1/ (possibly for backports, security, > > other branch2/ stable-updates etc) > > tags/ (these are the tags out of trunk) > > > > Perhaps there *is* a way to convert this, however it seems far from > > trivial to me. > > git-svn can handle this ok, I converted a similar layout in my own svn > repsository when coverting it to git. You have to run git-svn once per > package, creating a separate git repo per package, and pass it --trunk, > --tags and --branches. Well, I guess I need more education on this topic too. This is what I tried with libalias-perl: $ PKG=libalias-perl $ SVN=file:///svn/pkg-perl $ nice git-svn clone --trunk $SVN/trunk/$PKG \ --branches $SVN/branches/upstream/$PKG \ --tags $SVN/tags/$PKG \ $SVN $PKG .. time passes .. $ cd $PKG $ git branch * master $ git branch -a -v | cut -c -60 * master 4ab40b5 mass-change: rmdir /usr/{lib,shar 2.32 6960bcd repo reorganisation 2.32@323 494d792 [svn-inject] Installing original 2.32@6013 7abb0de [svn-inject] Tagging upstream sou current 618e6ad repo reorganisation current@6013 494d792 [svn-inject] Installing original tags/2.32-7 621c24d repo reorganisation tags/2.32-7@324 494d792 [svn-inject] Installing original tags/2.32-7@328 5e7d4e6 deleted strange file :-) tags/2.32-7@6013 2902cb7 [svn-buildpackage] Tagging libali trunk 4ab40b5 mass-change: rmdir /usr/{lib,shar trunk@324 494d792 [svn-inject] Installing original trunk@6013 15708e9 updated watch file Hmm, no tags, only a lot of branches $ git diff current..current@6013 | wc -l 0 $ git diff current..2.32 | wc -l 0 OK, they are the same. $ git diff trunk..trunk@324|wc -l 270 Ooops, these are different. I guess the repository can be cleaned up, but... is there some way to get it "right" right away? With only "upstream" branch and the tags being tags, not branches? > > * accounting (for a lack of better words) > > > > right now, one has to simply run "svn up" in a checked-out trunk/ and > > all packages are updated and new ones checked out. As Git would use > > one repository per package, we'll need some sort of "service area" > > where the list is kept. > > http://kitenet.net/~joey/code/mr/ is my solution to this. Oh, this can even handle the "service" area I was thinking of. Very nice :) > However, there's certianly a problem here, in that if you have 500 git > repos, a single "mr up" means 500 individual ssh connections to alioth > to update them. It is possible to use ssh connection caching to speed > things up. mr can also run N updates in parallel. We can offer some default .mrconfig that would not trash user's system or alioth. -- dam JabberID: dam@jabber.minus273.org
Attachment:
signature.asc
Description: Digital signature