threads / discuss / 11358

git-svn and migration

Subject: git-svn and migration

## tl;dr

5 messages between Dec 19, 2007 and Dec 19, 2007.

replies: 4people: 4as markdown or json

Nigel Magnay· Dec 19, 2007, 16:50 UTC · lore
Hi there!

I've been playing around with git for a while, read the guides to git-svn and have been successfully using it on my own to track an upstream svn repository.

Eventually, I'd like us all to switch to git, throw out the svn server, and replace it with a git repository that can be pushed to, where commits that pass tests get merged into the master.

But - that's not going to happen overnight. The most likely next steps are going to be something like migrating a couple of other developers onto git to test the water, but in the interim most people will still be on svn.

Has anyone got any tips as I'm sure it's a path trodden before? I've seen examples of keeping a read-only svn, but that's not really what I'm after. I'm considering whether to have a central git repo regularly pull from svn so that it's up to date, and having us possibly push to svn (or git if it's not merged to trunk) as an interim step..

Nigel
Steven Walter· Dec 19, 2007, 17:54 UTC · re: Nigel Magnay · lore

Re: git-svn and migration

On Wed, Dec 19, 2007 at 04:50:30PM +0000, Nigel Magnay wrote:
Show 6 quoted lines
> Has anyone got any tips as I'm sure it's a path trodden before? I've
> seen examples of keeping a read-only svn, but that's not really what
> I'm after. I'm considering whether to have a central git repo
> regularly pull from svn so that it's up to date, and having us
> possibly push to svn (or git if it's not merged to trunk) as an
> interim step..

Using a central git repo that is kept uptodate with svn is the approach I've used. git-svn isn't especially keen on this mode of operation, however. After every fetch, you have to reset refs/remotes/trunk to origin/master, which it turn puts .git/svn out of date (you can blow it away and run "git svn fetch" to regenerate it).

I wrote a script that automates most of this stuff (including doing incremental additions to git-svn's revdb/revmap). If there's interest, I can see about cleaning it up for general consumption.

-- 
-Steven Walter <stevenrwalter@gmail.com>
Freedom is the freedom to say that 2 + 2 = 4
B2F1 0ECC E605 7321 E818  7A65 FC81 9777 DC28 9E8F 
Miklos Vajna· Dec 19, 2007, 20:23 UTC · re: Steven Walter · lore

Re: git-svn and migration

On Wed, Dec 19, 2007 at 12:54:47PM -0500, Steven Walter <stevenrwalter@gmail.com> wrote:
Show 5 quoted lines
> Using a central git repo that is kept uptodate with svn is the approach
> I've used.  git-svn isn't especially keen on this mode of operation,
> however.  After every fetch, you have to reset refs/remotes/trunk to
> origin/master, which it turn puts .git/svn out of date (you can blow it
> away and run "git svn fetch" to regenerate it).

an other problem is that you probably want to have a bare repo while git-svn needs a working dir. a possible solution:

http://blogs.frugalware.org/vmiklos/2007/12/09/p320

(it works for me fine, but maybe there are problems with it so use with care :) )

- VMiklos
Nigel Magnay· Dec 19, 2007, 20:47 UTC · lore

I was prepared to put up with it not being a bare repository (asides the extra /.git/ in the URL it's pretty much the same).

On the git host I'd set refs/heads/trunk to be
 ref: refs/remotes/svn/trunk

And I'm hoping that a cron of git svn fetch ; git-update-server-info will do the trick. It appeared to keep it in sync when I fetch downstream. I don't know if I'm being naive though expecting that to work as I don't grok all that git-svn needs to work properly - but I'm working on it ;-)

My current plan is for developers to push/pull to git to share amongst the git-devs, and to push to svn when wanting to share with everyone else..

[svn user] ---(ci/co)--->[svn] --pull--> [git]
                            ^               ^
                           |               |
                          push          push/pull
                            |               |
                           ---[git user]----
On Dec 19, 2007 8:23 PM, Miklos Vajna < vmiklos@frugalware.org> wrote:
> On Wed, Dec 19, 2007 at 12:54:47PM -0500, Steven Walter < stevenrwalter@gmail.com> wrote:
> > Using a central git repo that is kept uptodate with svn is the approach
> > I've used.  git-svn isn't especially keen on this mode of operation,
 > > however.  After every fetch, you have to reset refs/remotes/trunk to
 > > origin/master, which it turn puts .git/svn out of date (you can blow it
> > away and run "git svn fetch" to regenerate it).
>
> an other problem is that you probably want to have a bare repo while
> git-svn needs a working dir. a possible solution:
 >
> http://blogs.frugalware.org/vmiklos/2007/12/09/p320
>
> (it works for me fine, but maybe there are problems with it so use with
> care :) )
 >
> - VMiklos
 >
Seth Falcon· Dec 19, 2007, 21:14 UTC · re: Nigel Magnay · lore

Re: git-svn and migration

"Nigel Magnay" <nigel.magnay@gmail.com> writes:
Show 22 quoted lines
> I was prepared to put up with it not being a bare repository (asides
> the extra /.git/ in the URL it's pretty much the same).
>
> On the git host I'd set refs/heads/trunk to be
>  ref: refs/remotes/svn/trunk
>
> And I'm hoping that a cron of git svn fetch ; git-update-server-info
> will do the trick.  It appeared to keep it in sync when I fetch
> downstream. I don't know if I'm being naive though expecting that to
> work as I don't grok all that git-svn needs to work properly - but I'm
> working on it ;-)
>
> My current plan is for developers to push/pull to git to share amongst
> the git-devs, and to push to svn when wanting to share with everyone
> else..
>
> [svn user] ---(ci/co)--->[svn] --pull--> [git]
>                             ^               ^
>                            |               |
>                           push          push/pull
>                             |               |
>                            ---[git user]----

I suspect having the git users push/fetch only from svn would be more reliable. Won't there be problems if git users do merges and push to the git repo?

Also, seems like it makes the transition more complicateds for git users since they have to figure out git-svn _and_ the git push/pull.

Perhaps avoid the central git repo until everyone is on git. Then people have to learn not to use git-svn and to use push/pull instead.

My $0.02
+ seth
-- 
Seth Falcon | seth@userprimary.net | blog: http://userprimary.net/user/

← back to recent threads