Каталог в репозитории изменил имя, а затем изменил обратно — svn больше не распознает каталог рабочей копии как то же местоположение

#svn

#svn

Вопрос:

Я работаю совместно над большим количеством кода, и несколько дней назад сотрудник изменил имя каталога в репозитории. Понимая это, я спросил человека, могут ли они изменить имя обратно на его исходное имя, чтобы избежать сложного разрешения с помощью svn (в моей рабочей копии было несколько изменений, которые еще не были зафиксированы, которые я хотел сохранить). Сотрудник изменил имя каталога обратно на то, что было, но теперь svn status -u вызов сообщает мне, что каталог в моей рабочей копии больше не распознается как тот, который находится в репозитории. Он также предупреждает > local dir edit, incoming dir delete upon update

Вот упрощенное описание того, что произошло:

Изначально:

 WC: /main/path/script/...
Repo: /main/path/script/...
  

Затем:

 WC: /main/path/script/...
Repo: /main/path/python_scripts/...
  

Наконец:

 WC: /main/path/script/...
Repo: /main/path/script/...
  

Где последний утверждает, что эти два местоположения больше не совпадают.

Может кто-нибудь объяснить мне, как я могу снова синхронизировать эти два пути, не передавая мою текущую рабочую копию в репозиторий? Пожалуйста, обратите внимание, что я не очень хорошо разбираюсь в рабочем цикле svn, поэтому буду признателен за подробное объяснение.

Комментарии:

1. Что такое корень вашего WC? Не могли бы вы попробовать — svn info и опубликовать вывод.

Ответ №1:

Похоже, вы выпустили обновление после первого переименования каталога вашего скрипта в репозитории, а затем переименовали его обратно. Теперь ваш каталог остается в состоянии неразрешенного конфликта. Попробуйте разрешить это следующим образом:

 cd /main/path/script/
cp -pR . ../script.bak # !!!do not forget perform backup!!!

svn resolve
Tree conflict on '.'
   > local dir add, incoming dir add upon update
Select: (r) mark resolved, (p) postpone, (q) quit resolution, (h) help: r
Resolved conflicted state of '.'
  

Теперь вы можете видеть, чем был заменен ваш локальный каталог. Вероятно, вы хотите зафиксировать только это изменение:

 svn stat -qu --depth=empty
R                -   .

svn ci --depth=empty -m"renaming was resolved"
Replacing      .
svn: The depth of this commit is 'empty', but copies are always performed recursively in the repository.

Committed revision 6532.
  

После этого все ваши файлы должны остаться нетронутыми.