Я успешно импортировал большой репозиторий Subversion в git, используя git-svn
. Это заняло более четырех дней, и мне пришлось выручить, пропустив несколько ревизий.
К сожалению, я забыл некоторые ветки.
Причина в том, что их структура в исходной иерархии Subversion существенно отличается. Вот как укладывается большинство ветвей, примерно:
/MainProject // this is the trunk
/MainProject_Branches/SomeBranch
/MainProject_Branches/AnotherBranch
Это работало нормально с --branches=
.
Но также есть дополнительные ветви в подпапке old
в этой той же папке веток:
/MainProject_Branches/old/AVeryOldBranch
/MainProject_Branches/old/AnotherOldBranch
И также есть совершенно другая иерархия:
/Customers/SomeCustomer/MainProject_CustomerSpecificFork // this, too, is a branch
/Customers/AnotherCustomer/MainProject_AnotherCustomerSpecificFork // this, too, is a branch
Я хотел бы задним числом обработать эти два сценария.
Итак, один, git-svn
решил импортировать всю совокупность /MainProject_Branches/old
как одну ветвь, что, конечно, не имеет смысла. В этом нет ничего сложного, но в идеале Я бы хотел, чтобы неправильная «старая» ветвь была заменена реальными ветвями внизу. (Кстати, кажется, что SourceTree по крайней мере рассматривает ветку с косой чертой в его имя - иерархия. Поэтому было бы еще лучше, если бы их можно было буквально импортировать в разборную иерархию подветвлений!)
Во-вторых, и что более важно, все специфичные для клиента вилки вообще отсутствуют, поскольку они находятся в совершенно другой иерархии (но в одном и том же репозитории SVN). Я хотел бы, чтобы те были добавлены после факта.
Возможно ли это вообще? Нужен ли мне инструмент, отличный от git-svn
?