Git: невозможно определить восходящую информацию SVN из истории HEAD - PullRequest
4 голосов
/ 19 июля 2011

Я успешно использую git-svn для подключения к моей соединительной линии SVN в течение некоторого времени.Первоначально я настроил свое репо, выполнив следующее:

git svn clone -s http://domain.com/svn/name-of-repo

У меня была эта настройка в течение достаточно долгого времени (возможно, около года), и у меня не было проблем, скорее всего, потому что все, что я делаю, включенолокальная ветка git, которую я в конечном итоге сливаю обратно в свою основную ветку и фиксирую обратно в ствол svn.

Недавно мне нужно было начать вносить некоторые изменения в другую ветку в том же репозитории svn, http://domain.com/svn/name-of-repo/branches/demo.

Мне удалось извлечь из этой ветви один раз, отредактировав мой файл .git / config и добавив следующие строки:

[svn-remote "svndemo"]
    url = http://domain.com/svn/name-of-repo/branches/demo
    commiturl = http://domain.com/svn/name-of-repo/branches/demo
    fetch = :refs/remotes/git-svn-demo

Затем я выполнил следующую команду, чтобы получить демо-веткуначиная с ревизии 4034:

git svn fetch svndemo -r 4034 

Итак, теперь у меня есть новая удаленная ветка с названием remotes / git-svn-demo.Исходя из этого, я создал ветку объектов:

git checkout -b svndemo-local remotes/git-svn-demo

Это захватило все, что мне было нужно, поэтому я внес изменения, которые я должен был внести, зафиксировав свою локальную ветку, затем попытался запустить "git svn fetch && git svn"перебазироваться».Обе возвращенные ошибки:

Невозможно определить восходящую информацию SVN из истории рабочего дерева

И вот где я застрял.Я осмотрел SO и другие сайты (Google), но не нашел решения, кроме «git-svn клонировать репо и начать все сначала», что не идеально.

У меня естьПосмотрел мой .git / svn / refs / remotes / git-svn-demo / unhandled.log и сравнил его с моим .git / svn / refs / remotes / trunk / unhandled.log, и в них нет ничего особенного.

Я также посмотрел на сообщение о коммите, пришедшее из начальной выборки этой удаленной ветви, и оно включает в себя информацию git-svn-id.

бла-бла-бла,это сообщение коммита, бла-бла-бла

git-svn-id: http://domain.com/svn/name-of-repo/branches/demo@4034 e6edf6fb-f266-4316-afb4-e53d95876a76

Я бы с удовольствиемуслышать свежую идею об этом.

1 Ответ

1 голос
/ 20 июля 2011

Для доступа к веткам SVN вам не нужно добавлять новый SVN Remote. Когда вы настроили свой клон git svn с помощью опции -s (стандартная), git также отслеживал все ветви, определенные в ветвях.

Вы должны увидеть эти ветки с помощью git branch -r (в данном случае демонстрация ветки).

Если вы проверите это, вы можете работать в нем и svn dcommit к нему.

Я не уверен, что изменение svn-remote испортило ваш репозиторий или нет, но я на вашем месте, я бы предположил, что это произошло и начнется заново с вашей исходной командой клона.

...