From: Deskin Miller <deskinm@gmail.com>
To: Sam Vilain <sam@vilain.net>
Cc: martin f krafft <madduck@madduck.net>,
git discussion list <git@vger.kernel.org>
Subject: Re: reviving a git-svn clone
Date: Tue, 21 Apr 2009 02:09:31 -0700 [thread overview]
Message-ID: <86d4c5e00904210209v3f1b8fd3t6a991fe44455941@mail.gmail.com> (raw)
In-Reply-To: <1240296712.3424.8.camel@maia.lan>
On Mon, Apr 20, 2009 at 23:51, Sam Vilain <sam@vilain.net> wrote:
> On Mon, 2009-04-20 at 12:43 +0200, martin f krafft wrote:
>> I am now trying to revive the clone, but git-svn remains "unable to
>> determine the upstream SVN information from the working tree
>> history". This baffles me.
>>
>> Here are my steps:
>
>> -8<--8<--8<-
>> alioth:~|master|% git clone /git/collab-maint/hibernate.git hibernate-svnsync
>> Initialized empty Git repository in /srv/alioth.debian.org/chroot/home/users/madduck/hibernate-svnsync/.git/
>>
>> alioth:~|master|% cd hibernate-svnsync
>>
>> alioth:~/hibernate-svnsync|master|% git branch --no-track upstream origin/upstream
>>
>> alioth:~/hibernate-svnsync|master|% cat >> .git/config <<_eof
>> heredoc> [svn-remote "svn"]
>> heredoc> url = svn+ssh://svn.suspend2.net/svn/hibernate-script
>> heredoc> fetch = trunk:refs/remotes/upstream/trunk
>> heredoc> branches = branches/*:refs/remotes/upstream/*
>> heredoc> tags = tags/*:refs/remotes/upstream/tags/*
>> heredoc> _eof
>
> for git-svn to resume, it needs the refs all in the right place. If you
> clone a git-svn repository they will be in the wrong place.
>
> eg for this use case something like this to copy the
> refs/remotes/origin/* refs to refs/remotes/upstream/*:
>
> git for-each-ref --format="%(refname)" refs/remotes/origin/* |
> perl -le '$x = $_; $x =~ s{origin}{upstream};
> system "git update-ref $x $_"'
Sam is on the right track. I got the rev-map to rebuild with the
following steps (sufficient, perhaps not all necessary); enter these
after you hack .git/config with the svn info.
First, we need the backend .git/svn/.metadata file, populated with the
right URL and svn uuid; the uuid follows the URL and revision on log
messages:
$ mkdir .git/svn
$ cat > .git/svn/.metadata << EOF
[svn-remote "svn"]
reposRoot = svn+ssh://svn.suspend2.net/svn
uuid = c12ee44c-9ede-0310-94ea-d4716f4f7118
EOF
Now, make the remote-tracking branch upstream/trunk at the right
commit, and check out a local copy; the commit ID is the latest commit
from svn, also known as master^2 (at the time of this writing) if you
do a normal git clone from your provided url:
$ git update-ref refs/remotes/upstream/trunk 1784ac6d
$ git checkout -b upstream upstream/trunk
Now, do git svn info or your other favourite local command to rebuild
the rev-map:
$ git svn info
If you have access to the svn remote, you should be able to avoid
hacking config and .metadata entirely by entering
$ git svn init --stdlayout --prefix=upstream/
svn+ssh://svn.suspend2.net/svn/hibernate-script
This doesn't fetch any commits, but will contact the svn server to
obtain the uuid. Plus, it's much easier to type. At any rate, the
commands prior to that rebuilt the rev-map metadata for me; I can't
guarantee the alternative last one, since I can't test it myself.
> It's a bit hard to test without access to the upstream svn!
I concur :) Hope that straightens things out.
Deskin Miller
P.S. Thanks Dscho for the excellent msysgit package
next prev parent reply other threads:[~2009-04-21 9:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-20 10:43 reviving a git-svn clone martin f krafft
2009-04-21 6:51 ` Sam Vilain
2009-04-21 8:14 ` martin f krafft
2009-04-21 9:09 ` Deskin Miller [this message]
2009-04-21 11:58 ` martin f krafft
2009-04-21 17:06 ` switching a git-svn clone to a different URL (was: reviving a git-svn clone) martin f krafft
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86d4c5e00904210209v3f1b8fd3t6a991fe44455941@mail.gmail.com \
--to=deskinm@gmail.com \
--cc=git@vger.kernel.org \
--cc=madduck@madduck.net \
--cc=sam@vilain.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).