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, він не отримує котирування та не з’являється, коли я намагаюся переглядати сховище в Інтернеті.

Як змусити це зробити?


3
Чи містить папка "автозаповнення" зламаний підкаталог ".svn"? Також ви чистили? :)
bzlm

1
Ви пробували: очищення svn, просто колоту в темряві?
shaunhusain

Я зіткнувся з цим питанням, коли скопіював зареєстрований каталог у іншу папку свого проекту. Видалення старих файлів .svn!
paulrehkugler

Я рішуче додав файли: svn add --force /path/to/fileабо якщо ви хочете додати каталог рекурсивно: svn add --depth infinity --force /path/to/directory.
жарт

Відповіді:


162

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

Тепер оновіть свій проект, очистіть і виконайте те, що залишилося. Тепер поверніть свою папку назад у робочий каталог, додайте її та виконайте фіксацію. Здебільшого цей спосіб працює, здається, SVN в основному заплутався ...

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

Не потрібно було переміщувати папку, просто видаливши .svnпапку, а потім додавши SVN, вона працювала.


52
Не потрібно було переміщувати папку, просто видаливши .svnпапку, а потім додавши SVN, вона працювала.
квітня 11

6
+1 для створення мого дня ;-) Як сказав Марк, для мене було достатньо видалити .svn каталоги в проблемній папці.
rturrado

23
Дякуємо, що визначили SVN як повний BS.
Стів К

1
тепер, коли у вас є тільки .svn у верхній папці, ви не можете зробити це BS, якщо метадані пошкоджені, ви
тостуєте

зніміть батьківську папку (програми / автозаповнення) зі списку, якщо вона вже здійснена
khaled_webdev

20

У мене виникла схожа проблема після додавання дерева каталогів, який містив .svn каталоги (тому що це джерело svn: зовнішнє у вихідному середовищі): статус svn сказав мені "?", Але при спробі додати його було "вже" під контролем версій ".

Оскільки інших каталогів з версією не було, я це зробив

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 {} \;

3

Ви намагалися виконати очищення svn?


2
Я теж зіткнувся з цією проблемою. Потім спробував, svn cleanupі це не допомогло.
imacake

3

Перевірте наявність каталогу "apps / autocomplete / .svn". Перемістіть його кудись у безпечному місці (якщо вам знадобиться відновити його, оскільки це не спрацювало) та подивіться, чи це усуне проблему.


0

Я знайшов рішення у випадку, якщо ви встановили Eclipse (Luna) з клієнтом SVN JavaHL (JNI) 1.8.13 та Tortoise :

Відкрити затемнення: Спершу спробуйте додати модуль проекту / maven до контролю версій (Проект -> Меню контексту -> Команда -> Додати до контролю версій)

Ви побачите таке повідомлення про помилку Eclipse:

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

Після цього потрібно відкрити каталог свого робочого простору у своєму досліднику, вибрати проект та вирішити його через Tortoise (Проект -> Меню контексту -> TortoiseSVN -> Розв’язати)

Ви побачите таке діалогове вікно повідомлення: " Список файлів порожній "

Натисніть скасувати та оновіть проект у програмі Eclipse. Ваш проект знову повинен перебувати під контролем версій.

На жаль, неможливо одночасно вирішити більше одного проекту ... не потрібно нічого видаляти, але залежно від розміру вашого проекту це може бути трохи трудомістким.


0

Для мене робив оновлення svn, після чого працював svn фіксація. У папці, яку не вдалося додати, не було папок .svn.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.