Перемещение папки исправления 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.