Разделить файлы, сохраняя историю в 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
  • Записано все, и история выглядит хорошо.