2010-06-21 2 views

ответ

10

Вы часто видите это, если у вас есть ситуация, когда вы создали каталог на ветке (даже если я не проверял его), но между тем кто-то также создал каталог с таким же именем на багажник. Поэтому, когда вы переключаетесь с ветки на туловище, она пытается проверить версию этого каталога, но она не может, потому что она уже существует и поэтому не хочет уничтожать вашу версию.

EDIT:

Лучший способ решить эту проблему, чтобы переименовать этот каталог в рабочей копии затем обновить. После обновления вы можете решить, нужно ли копировать содержимое во вновь созданный каталог.

EDIT2:

Существует не хороший способ решения SVN это автоматически. Похоже, что вы создали эту папку в своей рабочей копии (которая в настоящее время проверена на ветке), а кто-то другой создал папку этого имени на соединительной линии. Когда вы переключаетесь, он пытается создать новый каталог, но он не может, потому что у вас его уже есть. Я утверждаю, что способ справиться с этим заключается в том, чтобы временно переименовать каталог, затем переключить, а затем сравнить содержимое обоих каталогов, чтобы увидеть, есть ли дополнительные файлы, которые нужно добавить или объединить.

+0

Этот ответ не дает правильной резолюции по этому вопросу. Знаете ли вы, как это решить? (В настоящее время я сталкиваюсь с этой проблемой, и мое самое лучшее решение - сделать чистую проверку, что очень занимает много времени) –

+0

См. Обновленный ответ –

+0

У меня ситуация, когда переименование не является хорошим вариантом. Есть ли способ отремонтировать его? –

3

Я подозреваю, что \ Path \ To \ The \ Directory не существует в ветке, но существует в соединительной линии. Возможно, недавно добавлено в багажник? Когда вы переключаетесь, SVN думает, что он должен добавить его в свой локальный каталог, поскольку он не (предположительно) в ветке, из которой вы переключаетесь. Но это все равно. Это может быть результатом предварительного переключения без надлежащей проверки. т. е. вы сделали этот переключатель раньше, а затем, когда вы переключились с багажника на ветку, вы не очистили груду. поэтому теперь находится оставшийся каталог, и он не ожидает его увидеть.

2

Возможно, Path/To/The/Directory не существует в вашей текущей ветке, но существует ли в багажнике?

Еще одна проблема, которая может возникнуть в том, что на сервере SVN работает ОС с учетом регистра (например, nix), и вы используете Windows. В этом случае сервер SVN будет учитывать:

Path/To/The/Directory 
Path/To/The/directory 

как два разных каталога. Обычно это происходит, когда кто-то делает изменение дела в имени каталога.

2

Простым решением является использование svn switch с флагом --force.

Например, я увидел ошибку после переключения на ветвь, когда я переключился обратно на магистраль. Это решило мои проблемы:

svn switch --force ^/trunk 
0

Чтобы исправить эту ошибку, оставляя каталог на месте, я нашел следующий метод работал:

  • SVN переключить каталог на правильный путь в хранилище (если он не указывает там уже).
  • Перемещение.svn скрытая папка внутри каталога к некоторому безопасному местоположению (ваш рабочий стол).
  • SVN Очистка и обновление родительского каталога. Обновление может привести к такой же ошибке в некоторых подкаталогах. Игнорируйте это.
  • В каталоге будет создана новая скрытая папка .svn. Переместите исходную скрытую папку .svn обратно в каталог, перезаписав существующее содержимое новой .svn-папки. Я не помню, если бы я сделал это из-за какой-то ошибки или как догадки ... во всяком случае, похоже, это трюк.
  • SVN обновляет каталог снова.
  • Voila!

Обратите внимание, что хотя бы один раз в одной системе этот трюк привел к отображению всех подкаталогов/файлов?. Удаление папки .svn из подкаталога и очистка/обновление родителя снова сделали трюк.

Не знаете, что это за вуду, но потом я совершил изменения и обновил различные системы, и все они выглядят счастливыми.

FYI я получил в это состояние из-за необычной ситуации:

/Foo был СВН: внешнее по отношению к/newfoo/бар, и это расположение, необходимо было уничтожить так/newfoo/бар был перемещен и переименован в/Foo.

  • Я удалил svn: внешнее свойство, указав/foo, и зафиксировал его.
  • Я использовал браузер репозитория TortoiseSVN для первого перемещения/newfoo/bar в/bar, а затем переименовал/bar в/foo.
  • Обновление SVN в моей локальной копии вначале привело к сообщению об ошибке, которое/foo указывало на/newfoo/bar, когда/foo существовал (или somesuch).
  • I SVN переключился/foo на новый путь/foo
  • Теперь обновление SVN привело к ошибке «версия с таким же именем уже существует».
Смежные вопросы