Разделить файлы, сохраняя историю в SVN
Во время рефакторинга мне иногда приходится разбивать один исходный файл на два или более (например, когда класс стал настолько большим, что его нужно разделить на два класса).
Например, пусть A - исходный файл, а B1 и B2 - новые файлы.
Можно ли сообщить SVN, что B1 и B2 должны "наследовать" всю историю файла A, поэтому, когда я просматриваю оба журнала истории B1 и B2, я вижу, что они вышли из A, и журналы выглядят следующим образом:
A B1 B2
- change A3 - change B1.2 - change B2.2
- change A2 - change B1.1 - change B2.2
- change A1 - change A3 - change A3
- change A2 - change A2
- change A1 - change A1
Я знаю, как сохранить историю при переименовании файла (как обсуждалось здесь, на SO), но AFAIK - это только способ сохранить историю A связанные с B1 или B2, не оба.
В настоящее время я использую Tortoise SVN 1.6.12 для Windows.
Ответы
Ответ 1
Просто сделайте 2 копии SVN файла A, а затем SVN удалите файл A.
Я только что сделал быстрый тест с новым репо и, похоже, работает отлично.
- Я создал файл A.txt с двумя классами B1 и B2 внутри и зафиксировал файл a.txt
- Я сделал SVN-копию A.txt в B1.txt и удалил объявление класса B2 из B1.txt
- Я сделал еще одну SVN-копию A.txt в B2.txt и удалил объявление класса B1 из B2.txt
- я SVN удален A.txt
- Записано все, и история выглядит хорошо.