В настоящее время я пытаюсь переместить несколько проектов из SVN в GIT с помощью GIT-SVN. Независимо от того, какой проект я пытаюсь преобразовать, svn-версий гораздо больше, чем коммитов git. Я действительно не знаю SVN, поэтому мне трудно понять, почему это происходит.
Я в основном следовал этому руководству по конвертации.
Потери на пути варьировались от 18 ревизий до 9 коммитов, от 131 ревизии до 10 коммитов в git. Это произошло в проектах как с множеством веток, так и без них.
До сих пор я пытался использовать опцию --stdlayout
( Отсутствуют ревизии после "git svn clone" ).
Я также попытался использовать svn2git , однако это также не удалось, вероятно потому, что мои проекты не имеют инфраструктуры, необходимой для svn2git (отсутствуют файлы формата и db).
Я думаю, что в конце концов я найду способ сделать это, используя любой из других доступных инструментов (например, this ), но я просто хотел бы знать, почему это происходит.
Итак: кто-нибудь знает, почему так много ревизий не отображается в истории коммитов при использовании git-svn для преобразования svn-репозиториев в git? Git-svn просто глючит или есть какие-то типы ревизий, которые просто не отображаются в истории git commit?
Обновление
С тех пор я узнал, что svn log
- вопреки git log
- показывает все ревизии в истории, а не только те, которые находятся в стволе / мастере. Это означает, что многие из ревизий, которые я считал отсутствующими, на самом деле были только в ветках. Однако, несмотря на это, не все ревизии находятся в истории коммитов. Отсутствуют те, которые отображаются при вызове svn log
, например. внутри \branches
(но не внутри одной из ветвей). git-svn
, вероятно, не импортирует их, потому что они не влияют ни на master, ни на какие-либо ветви. Хотя теперь это ясно для меня, я все еще немного растерялся относительно значимости этого. Важны ли эти ревизии или история git без них хороша?
Обновление 2
Файл .git / config
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
ignorecase = true
[svn-remote "svn"]
noMetadata = 1
url = svn://TheURL/TheRepository
fetch = trunk:refs/remotes/svn/trunk
branches = branches/*:refs/remotes/svn/*
tags = tags/*:refs/remotes/svn/tags/*
[svn]
authorsfile = /a/file/path/svn/authors-transform.txt
[remote "origin"]
url = https://github.com/User/TheRepository.git
fetch = +refs/heads/*:refs/remotes/origin/*
Структура файла:
TheRepository
|
+--branches
| |
| +--branchA
| |
| +--Readme_branch.txt
|
+--trunk
|
+--tags