Git-svn отказывается создавать ветку на ошибку репозитория svn: «не в том же репозитории» - PullRequest
4 голосов
/ 22 июля 2009

Я пытаюсь создать ветку svn, используя git-svn . Хранилище было создано с --stdlayout. К сожалению, он генерирует ошибку, в которой говорится, что «Source и dest не находятся в одном и том же хранилище». Ошибка, по-видимому, является результатом ее отсутствия, включая имя пользователя в исходном URL.

$ git svn branch foo-as-bar -m "Попытка сделать Foo в баре."

Копирование svn + ssh: //my.foo.company/r/sandbox/foo/trunk на r1173 в SVN + SSH: //svnuser@my.foo.company/r/sandbox/foo/branches/foo-as-bar...

Попытка использовать неподдерживаемую функцию: Source и dest не отображаются быть в том же хранилище (источник: ' SVN + SSH: //my.foo.company/r/sandbox/foo/trunk'; ДСТ: ' SVN + SSH: //svnuser@my.foo.company/r/sandbox/foo/branches/foo-as-bar') по адресу /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 ]

4 голосов
/ 13 августа 2009

Я думаю, что это ошибка в git-svn, если вы видите исходный репозиторий в сообщении об ошибке, он пропускает часть URL-адреса svnuser @. Это потому что git-svn использует репозиторий svn из сообщения коммита? Я не уверен. Я смог заставить его работать, изменив скрипт perl git-svn для включения в код 609 жестко запрограммированного URL-адреса. В вашем случае строка 609 выглядела бы примерно так ...

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

Обратите внимание, что это может отличаться, если ваш git-svn новее или старше моего. После того, как я успешно разветвился, я удалил строку (поскольку мне нужно было только разветвляться дважды.) Я собираюсь подать отчет об ошибке.

Также обратите внимание, что если вы используете репозитории не svn + ssh типа .., например, file: //// home / r / sandbox / foo / trunk, это не проблема.

1 голос
/ 06 мая 2010

Фактическое исправление для этого в этом патче, полученном из ветки списка рассылки :

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' };

Обратите внимание, что для той же ревизии, которую использует Дэнни, 1.6.3.3, я нашел эту конкретную строку на 588. В Ubuntu Karmic 9.10 этот скрипт имеет вид /usr/lib/git-core/git-svn.

...