Перемещение папки исправления SVN выполняется неправильно

Кто-то на моей работе переместил папку в другое место. Но он не сделал правильного перемещения SVN, он просто добавил их как новые файлы и удалил старые файлы. Это, конечно, означало, что история предметов ошибочна. В то время я отсутствовал, и с тех пор произошли некоторые изменения в файлах, поэтому исправление ревизий и повторная операция сами отсутствуют.

Есть ли способ исправить это, чтобы SVN осознал всю свою историю?

P.S. Я использую tortoiseSVN.

Ответ 1

Невозможно отредактировать содержимое истории репозитория Subversion. Вы должны:

  • перестройте репозиторий, начиная с предварительной ошибки, совершая правильный ход, а затем совершая изменения после этого. Это требует, чтобы все получили новые рабочие копии или перемотали их (svn update -rN) до изменений, которые будут заменены.
  • Удалите перемещенную папку, заново создайте ее как копию старой папки (svn copy <url of old dir>@<old rev> <new name in wc>), затем используйте svn merge, чтобы повторно применить изменения с тех пор к новой копии папки старого местоположения.

Ответ 2

Это из FAQ TortoiseSVN:

Если вы уже совершили удаленный файл, то вы можете использовать браузера хранилища, измените где файл все еще существует а затем используйте команду Копировать в... из контекстного меню. Введите путь к вашей рабочей копии в качестве цели и удаленный файл будет скопирован из репозиторий вашей рабочей копии.

Вы также можете восстановить удаленный каталог, используя эту технику.

Конечно, вам нужно сначала удалить (или переименовать) папку, добавленную вашим коллегой.

Ответ 3

Из справки TortoiseSVN http://tortoisesvn.net/repairmoves.html

Перемещение и переименование версий файлов внутри рабочей копии всегда должно быть сделано с соответствующим Команды Subversion/TortoiseSVN. перемещать/переименовывать без них (например, с помощью проводник Windows) приводит к проблемы, поскольку Subversion не знает что вы переместили/переименовали файлы.

Например, если вы переименуете файл myfile.txt с именем myfile2.txt без использования Команда Subversion/TortoiseSVN, myfile.txt будет отображаться как "отсутствует" и myfile2.txt как "не-версии" в диалог фиксации или Диалоговое окно "Check-for-Modifications".

Если это произойдет с вами, TortoiseSVN предлагает вам простой способ исправить это.

Как я знаю, это единственный способ восстановить ход, но не уверен в move_and_then_added.