Существует проект с закрытым исходным кодом, который будет открытым, и меня попросили попытаться добавить лицензии ко всем исходным файлам в репозитории SVN задним числом, поскольку история дерева может представлять общий интерес. Существует также интерес к миграции на DVCS, и hgsubversion не отслеживает svn mergeinfo, поэтому я решил попробовать преобразовать SVN-репозиторий в git (выполнить одностороннее преобразование, которое исправило теги и тому подобное), а затем попытаться отредактировать история оттуда.
На самом деле мне очень повезло, так как в самой первой ревизии была ветка, которая привела к работе, выполненной для более раннего публичного релиза. Таким образом, я решил попробовать git rebase sourcerelease-branch master
. Через несколько очень болезненных часов я закончил ...
... за исключением одной проблемы. В преобразованном хранилище было несколько ветвей (включая «ветку», которая фактически была основной разработкой в 2009 или около того), и это не выглядело так, как ребаз прошел их. Спрашивая в #git
, мне сказали, что невозможно сделать git rebase
поперечных ветвей.
Хорошо стреляй ... что я могу сделать? Возможно ли то, что я собираюсь сделать, с помощью git или какой-то другой системы контроля версий?
РЕДАКТИРОВАТЬ: Вот изображение того, что у меня есть
A---B random_branch
/
C---D---E---F master
\
G---H add_license_branch
По сути, я хочу, чтобы изменения, которые я сделал в change-license-branch
, появлялись в master
и в любой ветви, которая ветвится от master
, например random_branch
. Когда я закончу, я даже не хочу add_license_branch
, было бы неплохо, если бы я мог сжать C, G и H вместе и поставить результат там, где C сейчас.