Ошибка команды миграции svn2git: git checkout -f master

У меня есть структура проекта в следующем формате. Он расположен по адресу https://ip/svn/siguard/DSA/.

  • ветви/

  • документы/

  • теги/

  • ствол/

Я установил svn2 git и сделал все установки. Я хочу запустить процесс миграции с помощью следующей команды

 svn2git https://ip/svn/siguard/ --trunk DSA/trunk --branches DSA/branches --branches DSA/docs --tags DSA/tags --authors author.txt --verbose

и это выход.

Running command: git svn init **--prefix=svn/** --no-metadata --trunk='DSA/trunk' --tags='DSA/tags' --branches='DSA/branches' --branches='DSA/docs' https://141.29.113.138/svn/siguard/
Initialized empty Git repository in C:/GitMigration/DSA/.git/
Running command: git config --local --get user.name
Running command: git config --local svn.authorsfile authors.txt
Running command: git svn fetch
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: '/svn/siguard/!svn/bc/100' path not found: Additional errors:: File not found: revision 100, path '/'DSA'
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories
Checked through r100
Checked through r200
Checked through r300
Checked through r400
Checked through r500
Checked through r600
Checked through r700
Checked through r800
Checked through r900
Checked through r1000
Checked through r1100
Checked through r1200
Checked through r1300
Checked through r1400
Checked through r1500
Checked through r1600
Checked through r1700
Checked through r1800
Checked through r1900
Checked through r2000
Checked through r2100
Checked through r2200
Checked through r2300
Checked through r2400
Checked through r2500
Checked through r2600
 Checked through r2700
Checked through r2800
Checked through r2900
Checked through r3000
Checked through r3100
Checked through r3200
Checked through r3300
Checked through r3400
Checked through r3500
Checked through r3600
Checked through r3700
Checked through r3800
Checked through r3900
Checked through r4000
Checked through r4017
Running command: git branch -l --no-color
Running command: git branch -r --no-color
Running command: git config --local --get user.name
Running command: git config --local --get user.email
Running command: git checkout -f master
error: pathspec 'master' did not match any file(s) known to git.
command failed:
git checkout -f master

Я не знаю, в чем проблема. Когда гуглю svn2git вроде все ок с этой утилитой.


person user725455    schedule 16.11.2016    source источник


Ответы (1)


Существует множество инструментов под названием svn2git, вероятно, лучший из них — это KDE из https://github.com/svn-all-fast-export/svn2git. Я настоятельно рекомендую использовать этот инструмент svn2git. Это лучшее из того, что я знаю, и оно очень гибкое в том, что вы можете делать с его файлами правил.

Используемый вами svn2git основан на git-svn, а git-svn не является подходящим инструментом для одноразового преобразования репозиториев или частей репозиториев. Это отличный инструмент, если вы хотите использовать Git в качестве внешнего интерфейса для существующего сервера SVN, но для одноразовых преобразований вы должны не использовать git-svn, а svn2git, который гораздо больше подходит для этого варианта использования. .

Если вы не на 100 % знаете историю своего репозитория, svneverever с http://blog.hartwork.org/?p=763 — отличный инструмент для изучения истории репозитория SVN при его переносе в Git.


Несмотря на то, что git-svn (или неправильный svn2git в вашем случае) проще начать, вот еще несколько причин, по которым использование KDE svn2git вместо git-svn лучше, помимо его гибкости:

  • история перестраивается намного лучше и чище по svn2git (если используется правильный), особенно это касается более сложных историй с ответвлениями и слияниями и т.д.
  • теги являются реальными тегами, а не ветвями в Git
  • с git-svn теги содержат дополнительную пустую фиксацию, которая также делает их не частью ветвей, поэтому обычный fetch не получит их, пока вы не дадите --tags команде, поскольку по умолчанию также извлекаются только теги, указывающие на извлеченные ветки. С правильными тегами svn2git они там, где им место
  • если вы изменили макет в SVN, вы можете легко настроить это с помощью svn2git, с git-svn вы в конечном итоге потеряете историю
  • с помощью svn2git вы также можете легко разделить один репозиторий SVN на несколько репозиториев Git.
  • или легко объединить несколько репозиториев SVN в одном корне SVN в один репозиторий Git
  • преобразование в миллион раз быстрее с правильным svn2git, чем с git-svn

Есть много причин, по которым git-svn хуже, а KDE svn2git лучше. :-)

person Vampire    schedule 22.11.2016
comment
Спасибо за Вашу поддержку. Теперь я мигрировал с помощью git-svn - person user725455; 29.11.2016