Git-svn拒绝在svn存储库错误上创建分支:“不在同一个存储库中”

时间:2009-07-21 22:08:57

标签: git git-svn branch

我正在尝试创建svn branch using git-svn。存储库是使用--stdlayout创建的。不幸的是,它会生成一个错误,指出“Source和dest似乎不在同一个存储库中”。该错误似乎是因为它不包括源URL中的用户名。

  

$ git svn branch foo-as-bar -m“尝试让Foo进入Bar。”

     

在r1173复制svn + ssh://my.foo.company/r/sandbox/foo/trunk到   SVN + SSH://svnuser@my.foo.company/r/sandbox/foo/branches/foo-as-bar ...

     

尝试使用不受支持的功能:Source和dest似乎没有   在同一个存储库中(src:   '的 SVN + SSH://my.foo.company / R /沙箱/富/躯干';   DST:   '的 SVN + SSH://svnuser@my.foo.company / R /沙箱/富/分支/富-作为杆')   at /home/me/.install/git/libexec/git-core/git-svn line 610

我最初认为这只是一个配置问题,.git/config的检查没有暗示任何错误。

 [svn-remote "svn"]
     url = svn+ssh://svnuser@my.foo.company/r
     fetch = sandbox/foo/trunk:refs/remotes/trunk
     branches = sandbox/foo/branches/*:refs/remotes/*
     tags = sandbox/foo/tags/*:refs/remotes/tags/*

我正在使用git version 1.6.3.3

任何人都可以阐明为什么会出现这种情况,以及如何最好地解决这个问题?

2 个答案:

答案 0 :(得分:4)

我认为这是git-svn中的一个错误,如果您在错误中观察到源存储库,则错过了url的svnuser @部分。这是因为git-svn使用了commit messsage中的svn repo?我不确定。我能够通过修改git-svn perl脚本来使其工作,以在609行包含硬编码的URL。在你的情况下,行609看起来像这样......

$ src =“svn + ssh://svnuser@my.foo.company/r/sandbox/foo/trunk”;

请注意,如果您的git-svn比我的更新/更旧,则可能会有所不同。在我成功分支后,我删除了该行(因为我只需要分支两次。)我要去提交错误报告。

另请注意,如果您使用的是非svn + ssh类型的repo,例如file://// home / r / sandbox / foo / trunk这不是问题。

答案 1 :(得分:1)

此修补程序的实际修复程序是从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' };

请注意,对于Danny使用的相同版本1.6.3.3,我在588找到了这个特定的行。在Ubuntu Karmic 9.10中,这个脚本是/usr/lib/git-core/git-svn