2009-07-21 22 views
4

Ich versuche, eine svn branch using git-svn zu erstellen. Das Repository wurde mit --stdlayout erstellt. Leider erzeugt es einen Fehler, der besagt, dass "Quelle und Ziel nicht im selben Repository sind". Der Fehler scheint darauf zurückzuführen zu sein, dass der Benutzername in der Quell-URL nicht enthalten ist.Git-svn weigert sich, Verzweigung auf Svn-Repository-Fehler zu erstellen: "nicht im selben Repository"

$ git svn branch foo-as-bar -m "Attempt to make Foo into Bar."

Copying svn+ssh://my.foo.company/r/sandbox/foo/trunk at r1173 to svn+ssh://[email protected]/r/sandbox/foo/branches/foo-as-bar...

Trying to use an unsupported feature: Source and dest appear not to be in the same repository (src: 'svn+ssh://my.foo.company/r/sandbox/foo/trunk'; dst: 'svn+ssh://[email protected]/r/sandbox/foo/branches/foo-as-bar') at /home/me/.install/git/libexec/git-core/git-svn line 610

Ich dachte intially dies einfach ein Konfigurationsproblem war, die Untersuchung von .git/config vorschlagen nichts falsch.

[svn-remote "svn"] 
    url = svn+ssh://[email protected]/r 
    fetch = sandbox/foo/trunk:refs/remotes/trunk 
    branches = sandbox/foo/branches/*:refs/remotes/* 
    tags = sandbox/foo/tags/*:refs/remotes/tags/* 

Ich verwende git version 1.6.3.3.

Kann jemand Licht in die Frage bringen, warum dies möglicherweise geschieht und wie man es am besten angeht?

Antwort

1

Eine tatsächliche Lösung für diese ist in diesem Patch erhalten von the mailing list thread:

diff --git a/git-svn.perl b/git-svn.perl 
index dba0d12..650c9e5 100755 
--- a/git-svn.perl 
+++ b/git-svn.perl 
@@ -663,7 +663,8 @@ sub cmd_branch { 
     } 
     $head ||= 'HEAD'; 

- my ($src, $rev, undef, $gs) = working_head_info($head); 
+ my (undef, $rev, undef, $gs) = working_head_info($head); 
+ my $src = $gs->full_url; 

     my $remote = Git::SVN::read_all_remotes()->{$gs->{repo_id}}; 
     my $allglobs = $remote->{ $_tag ? 'tags' : 'branches' }; 

Beachten Sie, dass für die gleiche Revision, die Dannys verwenden, 1.6.3.3, ich diese spezielle Linie bei 588. In Ubuntu Karmic gefunden 9.10, dieses Skript ist /usr/lib/git-core/git-svn.

4

Ich denke, das ist ein Fehler in git-svn, wenn Sie das Quell-Repository in dem Fehler beobachten, es fehlt der svnuser @ Teil der URL. Dies liegt daran, dass git-svn den SVN-Repo von der Commit-Meldung verwendet? Ich bin mir nicht sicher. Ich konnte es machen, indem ich das git-svn perl-Skript änderte, um die fest codierte URL in Zeile 609 einzuschließen. In deinem Fall würde Zeile 609 ungefähr so ​​aussehen ...

$ src = "svn + ssh: // [email protected]/r/sandbox/foo/trunk ";

Beachten Sie, dass dies anders sein kann, wenn Ihr git-svn neuer/älter als meins ist. Nachdem ich erfolgreich verzweigt hatte, entfernte ich die Zeile (da ich nur zweimal verzweigen musste). Ich werde einen Fehlerbericht ablegen.

Beachten Sie auch, wenn Sie nicht svn + ssh Typ Repo verwenden .. wie Datei: //// home/r/Sandbox/foo/trunk das ist kein Problem.

+0

Ja, genau das habe ich getan. Ich habe gerade die Perl-Datei gehackt, um den "user @" - Teil zwangsweise der Svn-URL hinzuzufügen. Sehr Ghetto offensichtlich. – Danny

+0

Danke, das hat mir geholfen. @slacker: Hast du einen Fehlerbericht eingereicht? Kannst du es verlinken? –

+0

thnx! die richtige Zeile für mich (mit der Flucht des @) ist: $ src = "svn + ssh: // svnuser \ @ mein.foo.company/r/sandbox/foo/trunk"; –

Verwandte Themen