SVN fix папка перемещена неправильно - PullRequest
11 голосов
/ 01 марта 2010

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

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

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

Ответы [ 3 ]

7 голосов
/ 01 марта 2010

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

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

Это из FAQ по TortoiseSVN :

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

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

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

1 голос
/ 01 марта 2010

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

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

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

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

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

...