Я импортирую старый svn repo в git. В какой-то момент папка была переименована во все ветви. Это было сделано в svn, создав дубликат с историей, за которым следует удаление оригинала во второй фиксации. Таким образом, у меня есть репо, который выглядит следующим образом:Как сквош фиксируется в ветвях
A -> B -> C -> D* -> E* -> F -> G -> H
\-> 1 -> 2* -> 3* - > 4 -/
Где D/E и 2/3 являются коммиты я хочу сквош. Причина того, что svn знает о «дублировании с историей», git не видит это как переименование, так как исходные файлы не удалялись до следующего фиксации, и я теряю историю на вину в этот момент.
Я экспериментировал с некоторыми скриптами, которые работают, но они также сглаживают все мои ветви. Вышеупомянутая версия является очень упрощенной версией того, что я должен сделать, поэтому мне действительно нужны сценарии, поскольку я не могу сделать это вручную. На протяжении всей истории репо SVN насчитывается более 1000 отделений и, возможно, дюжина параллельных ветвей, где это изменение было сделано (все одновременно).
Git repo еще не опубликован, поэтому сохранение хешей не имеет значения. Я предполагаю, что мне нужно будет использовать скрипт с фильтром, но я все еще пытаюсь понять, как управлять тем, что я надеялся получить здесь. I может предоставить sha1 каждой фиксации, которая нуждается в раздавливании и ее родителя.
фотография 4, мерзавец перебазироваться -i 1, изменение 2 и 3 фиксаций сквоша, они раздавят вверх в 1 – g19fanatic
Это оставляет меня с осиротевшим 4' , который затем я должен перебазироваться остальной частью моего дерева на. У меня 7-летняя история и почти 100 тыс. Транзакций, а также все ветви и слияния, которые появляются после этого момента, что делает ручную перезагрузку и исправление этой истории очень сложной. – Paco103