Миграция из Subversion в Git, где хранилище изначально не использовало стандартную компоновку - PullRequest
1 голос
/ 18 ноября 2011

Я пытаюсь перенести репозиторий Subversion, который изначально не использовал стандартную компоновку.Я не могу понять, как его перенести.

Например.В SVN Rev 1. - 700 макет

[svn]/projectfile
[svn]/projectfile2

До версии 700 он меняется на

[svn]/trunk/projectfile
[svn]/tags
[svn]/branches

Как запустить команду git svn init?

Прямо сейчас, когда я использую

git svn init -s <subversion_repository>

, он покажет все в каталоге, как будто нет ветвей.(аналогично команде ниже)

svn checkout <subversion_repository_root>/

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Поскольку у меня нет репозитория subversion, чтобы попробовать это, я могу лишь наметить способ решения, который может или не может работать:

  • Сначала создайте каталог для хранения вашего репозитория Git и cd в него
  • Инициализация вашего репозитория Git: git svn init svn://path/to/svn/repo
  • В этом репо запустите git svn fetch --revision 1:699 (или в любом другом диапазоне ревизий, где вы использовали нестандартный макет)
  • Изменить .git/config и изменить раздел [svn-remote], добавив / изменив записи fetch, branches и tags:
  [svn-remote "svn"]
    url = svn://path/to/svn/repo
    fetch = trunk:refs/remotes/trunk
    branches = branches/*:refs/remotes/*
    tags = tags/*:refs/remotes/tags/*
  • Запустите git svn fetch --revision 700:HEAD, чтобы получить оставшуюся часть репо
  • Если до этого момента все работало, но в вашем рабочем каталоге нет файлов, запустите git svn rebase --local, чтобы убедиться, что Git создает файлы.

Теоретически, это должно дать вам репозиторий Git с полной историей и всеми ветвями и тегами в целости.

Как обычно, сделайте резервные копии всего, что может быть затронуто этим, прежде чем делать что-либо из этого, и продолжайте на свой страх и риск и т. Д.

0 голосов
/ 24 ноября 2011

Как ответ, я обнаружил, что будет проблема, когда уже получить все ревизии в Git.Создайте новую проблему, например эту тему

После проверки хранилища я обнаружил, что, если я укажу параметр (-ы) для пометки своего хранилища как стандартного хранилища, он будет игнорироваться для всех не-стандарт, в моем случае он будет игнорировать Rev.1-700 и автоматически конвертировать из 700 после.

Итак, сейчас у меня все еще нет решения, кроме использования git-svn с полной выборкой изисходный URL и игнорируйте путь, по которому возникает проблема.

...