SVN: Папка уже находится под контролем версий, но не завершается?

111
mark@mark-ubuntu:~/myproject$ svn stat
?       runserver.sh
?       media/images/icons
?       apps/autocomplete
mark@mark-ubuntu:~/myproject$ svn add apps/autocomplete
svn: warning: 'apps/autocomplete' is already under version control

svn statговорит, что он не находится под контролем версий, поэтому я пытаюсь добавить его, а затем он говорит мне, что это так. Когда я делаю это svn ci, он не завершается и не отображается, когда я пытаюсь перейти к репозиторию в Интернете.

Как мне заставить его совершить?

mpen
источник
3
Папка "автозаполнение" содержит неработающий подкаталог ".svn"? Кроме того, вы убирались? :)
bzlm
1
Вы пробовали очистку: svn, просто удар в темноте?
Shaunhusain
Я столкнулся с этой проблемой, когда скопировал зарегистрированный каталог в другую папку в моем проекте. Удаление старого .svn работает!
paulrehkugler
Я решительно добавил файлы: svn add --force /path/to/fileили если вы хотите добавить каталог рекурсивно: svn add --depth infinity --force /path/to/directory.
joker

Ответы:

162

Скопируйте проблемную папку в какой-нибудь резервный каталог и удалите ее из рабочего каталога SVN. Не забудьте удалить все .svnскрытые каталоги из скопированной папки.

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

Обновление: цитируя комментарий @Mark :

Не нужно было перемещать папку, просто удалив .svnпапку и затем добавив svn, это сработало.

Томаш Нуркевич
источник
52
Не нужно было перемещать папку, просто удалив .svnпапку и затем добавив svn, это сработало.
mpen
6
+1 за то, что сделал мой день ;-) Как сказал Марк, для меня было достаточно удалить каталоги .svn в проблемной папке.
rturrado
23
Спасибо, что определили SVN как полную ерунду.
Steve K
1
теперь, когда у вас есть только .svn в верхней папке, вы не можете делать эту BS, если метаданные повреждены, вы тост
Kalpesh Soni
снимите отметку с родительской папки (apps / autocomplete) из списка, если она уже совершена
khaled_webdev
20

У меня была похожая проблема после добавления дерева каталогов, которое содержало каталоги .svn (потому что это был svn: external в исходной среде): svn status сказал мне «?», Но при попытке добавить это было «уже под контролем версий ».

Так как других каталогов с версией не было, я сделал

find . -mindepth 2 -name '.svn' -exec rm -rf '{}' \;

удалить неправильные каталоги .svn; после этого я смог добавить новый каталог.

Примечание :

  • Если другие каталоги с управлением версиями содержатся, выражение поиска необходимо изменить, чтобы оно было более конкретным.
  • Если не уверены, сначала опустите часть «-exec ...», чтобы увидеть, что будет удалено.
Тобиас
источник
Хотя этот ответ сработал для меня, в первый раз, когда я его использовал, я оказался не в той папке и все запуталось. Похоже, это хорошее место, чтобы напомнить людям «дважды отмерь, один раз отрежь», т.е. дважды проверьте детали, прежде чем запускать это.
BishopZ
Я рекомендую использовать «если не уверен», ... -exec echo {} \;чтобы вы также могли хорошо работать с переключателем -exec.
FlipMcF
Также рекомендую добавить -type dк находке. Назовите меня придирчивым, пока вы rm -rfне зайдете слишком далеко. Если не считать придирок - думаю, это правильный ответ.
FlipMcF
15

Разновидность @ gauss256 Ответит , стиранию .svn, работали для меня:

rm -rf troublesome_folder/.svn
svn add troublesome_folder
svn commit

Перед решением Гаусса я пробовал подход @ jwir3 и не получил удовольствия:

svn cleanup
svn cleanup *
svn cleanup troublesome_folder
svn add --force troublesome_folder
svn commit
варочные панели
источник
14

(1) Это только что случилось со мной, и я подумал, что интересно, как это произошло. По сути, я скопировал папку в новое место и изменил ее, забыв, что она принесет с собой все скрытые каталоги .svn. Как только вы поймете, как это происходит, в будущем легче избежать.

(2) Удаление каталогов .svn - это решение, но вы должны делать это рекурсивно по всему дереву каталогов. Самый простой способ сделать это:

find troublesome_folder -name .svn -exec rm -rf {} \;
gauss256
источник
3

Вы пробовали выполнить очистку svn?

jwir3
источник
2
Я тоже столкнулся с этой проблемой. Потом попробовал, svn cleanupи это не помогло.
imacake
3

Найдите каталог apps / autocomplete / .svn. Переместите его в безопасное место (на случай, если вам нужно восстановить его, потому что это не сработало) и посмотрите, решит ли это проблему.

jerryb
источник
0

Я нашел решение, если вы установили Eclipse (Luna) с клиентом SVN JavaHL (JNI) 1.8.13 и Tortoise :

Откройте Eclipse: сначала попробуйте добавить модуль проекта / maven в Контроль версий (Проект -> Контекстное меню -> Команда -> Добавить в Контроль версий)

Вы увидите следующее сообщение об ошибке Eclipse:

org.apache.subversion.javahl.ClientException: запись уже существует svn: 'PathToYouProject' уже находится под контролем версий

После этого вам нужно открыть каталог рабочей области в проводнике, выбрать проект и разрешить его через Tortoise (Проект -> Контекстное меню -> TortoiseSVN -> Разрешить)

Вы увидите следующее диалоговое окно с сообщением: « Список файлов пуст. ».

Нажмите «Отмена» и обновите проект в Eclipse. Ваш проект снова должен находиться под контролем версий.

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

Chisey88
источник
0

Для меня сработало обновление svn, а затем svn commit. В папке, которую не удалось добавить, нет папок .svn.

Sujeet
источник