[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Git for pkg-perl [was Re: Tools]



-=| 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


Reply to: