Снова включите зеркалирование с помощью git-svn - PullRequest
10 голосов
/ 09 июля 2011

В течение некоторого времени я отражал репозиторий Subversion в репозиторий Git.Который всегда работал нормально.Однако из-за сбоя виртуального сервера и отсутствия резервной копии мне пришлось заново настроить зеркало.Репозиторий, который мне нужно отследить, имеет размер почти 1200 коммитов и содержит много файлов (что является основной причиной для зеркала Git, поскольку намного быстрее получить копию репо).

Что яТеперь нужно сделать, чтобы мое недавно клонированное зеркало Git снова отследило хранилище Subversion.У меня нет проблем с добавлением новой удаленной ссылки, но я не могу понять, как снова вывести svn коммиты в ветку Git.

Одна ошибка, которую я, похоже, получаю - Unable to determine upstream SVN information from working tree history.

Как я могу включить зеркальное отображение хранилища Subversion в существующей ветке Git, за которой стоит только пара коммитов из хранилища Subversion?

Ответы [ 2 ]

11 голосов
/ 12 июля 2011

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

Однако, поскольку у вас его нет, попробуйте это:

  1. git svn init <a href="http://hostname/svn/repository">http://hostname/svn/repository</a> с любыми другими параметрами, которые вы использовали ранее (возможно -s?)

  2. git checkout последний коммит из svn.

  3. Воссоздайте git-svn ref: git update-ref refs/remotes/git-svn HEAD (или, если вы использовали -s, вместо этого должно быть refs/remotes/trunk)

  4. Извлечение последних из svn с момента текущего коммита: git svn fetch --parent. Это должно перестроить метаданные git-svn для всей вашей истории.

0 голосов
/ 28 мая 2015

Я нашел другой метод на http://trac.parrot.org/parrot/wiki/git-svn-tutorial:

Добавление метаданных git-svn в клон github

Если вы хотите повторно заполнить метаданные SVN, это можно сделать быстро взяв свой современный клон репозитория leto с gihub и добавив это к вашему .git / config

[svn-remote "svn"]
        url = https://svn.parrot.org/parrot
        fetch = trunk:refs/remotes/trunk

Затем запустите эту команду, чтобы найти "top commit"

 git show origin/upstream | head -n 1

и поместите этот хеш коммита в файл .git / refs / remotes / trunk (очевидно, замените has на команду из приведенного выше)

 echo c85aaa38b99cedb087e5f6fb69ce6d4a6ac57a0b > .git/refs/remotes/trunk

и, наконец,

 git svn fetch
...