Помилка SVN - не працює копія


215

Нещодавно наш сервер svn був змінений, і ми зробили комутатор svn.

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

Але на самому верхньому рівні сховища, коли я намагаюся оновити файли, я отримую svn: робочу копію '.' помилка заблокована та очищення також не допомагає. Під час очищення я отримую такі помилки - svn: 'content' - це не каталог робочої копії

Свіжий замовлення взагалі НЕ варіант. Чи існують інші способи очищення та звільнення замків та виконання перемикання повністю?

EDIT: Останній абзац у відповіді JesperE

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

начебто вирішення проблеми в сховищі. Я ідентифікував ці папки і здійснив нову перевірку цих конкретних папок самостійно і нічого собі, замки вивільняються в подальшому очищенні! Велике спасибі JesperE !!

Але я все ще не можу зрозуміти помилку комутатора svn, яка зараз читає щось на кшталт,

svn: сховище у 'svn: // repourl / reponame / namename' має uuid 'm / reponame', але WC має 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Будь-які ідеї?


для користувачів R, які стикаються з цією помилкою: github.com/wch/r-source/wiki#adding-svn-information
ізоморфізм

Відповіді:


126

Якщо ви отримуєте "не робочу копію" під час виконання рекурсивної думки, svn cleanupя маю на увазі, що у вас є каталог, який повинен бути робочою копією (тобто в .svnкаталозі на верхньому рівні так сказано), але в ньому відсутній власний .svnкаталог. У цьому випадку ви можете спробувати просто видалити / перемістити цей каталог, а потім зробити локальне оновлення (тобто rm -rf content; svn checkout content).

Якщо ви отримаєте not a working copyпомилку, це означає, що Subversion не може знайти там відповідного .svnкаталогу. Перевірте, чи є в .svnкаталозі каталогcontents

Ідеальне рішення - це свіжа каса, якщо це можливо.


1
Я погоджуюся, зробіть новий замовлення замість того, щоб намагатися перемістити свою робочу копію з репо.
Тиграйн

2
Моя проблема полягає в тому, що я перейшов на новий сервер і відновив резервні копії файлової системи з ще не виконаною роботою, і використовував svnadmin для фільтрації старих проектів, які мені вже не потрібні. Тож у моєму сховищі є вся необхідна мені інформація, але є новий UUID. У такому випадку я просто збираюся відстежувати змінені файли, отримувати нову перевірку, а потім знімати untar.
Драрок

Ваша пропозиція в першому пункті не працює в моїй системі (W7 + Cygwin). Швидше оновлення rm & svn зробило це.
Jukka Dahlbom

17
УВАГА: назавжди rm -rfвидаляє папку content. Візьміть резервну копію перед її виконанням.
KrishPrabakar

47

Я потрапив у подібну ситуацію ( svn: 'papers' is not a working copy directory) по-іншому, тому думав, що опублікую свою історію бою (спрощено):

$ svn add papers
svn: Can't create directory 'papers/.svn': Permission denied

На жаль! виправити дозволи ... тоді:

$ svn add papers
svn: warning: 'papers' is already under version control
$ svn st
~     papers
$ svn cleanup
svn: 'papers' is not a working copy directory

І навіть papersвиїзд з шляху та біг svn up(який працював на ОП) не виправили це. Ось що я зробив:

$ mv papers papers_
$ svn cleanup
$ svn revert papers
Reverted 'papers'
$ mv papers_/ papers
$ svn add papers

Це спрацювало.


6

Я вирішив це шляхом

  1. Скопіюйте резервну копію порушених папок
  2. SVN повертає порушені папки
  3. Вставте файли назад із резервної копії

У моєму випадку проблема була через видалені .svn-файли.


Як це зробити ? Будь ласка, поясніть коротко
Anand Savjani

5

Можливо, ви просто скопіювали дерево папки і намагаєтеся додати найнижчу.

SVN
|_
  |
  subfolder1
       |
       subfolder2   (here you get an error)

у такому випадку вам доведеться ввести каталог на верхньому рівні.


3

Вирішення: Перейменуйте каталог, який не є "робочою копією". Оформити перегляд / оновити / відновити цей каталог ще раз Перемістити файли з перейменованого каталогу в нові зміни зміни

Причина: Ви внесли деякі зміни до деяких файлів у каталозі .svn, це порушує "робочу копію"


3

Якщо ви створили файл у новому каталозі, замість 'svn add newdir / newfile' використовуйте 'svn add newdir', оскільки вам потрібно додати каталог. Усі файли всередині каталогу будуть додані за замовчуванням.


1

Я просто отримав "не робочу копію", і для мене причиною став Automouter на Unix. Тільки свіжий "cd / path / to / work / directory" зробив свою справу.


1

Те саме, мені потрібно було оновити папку "contrib":

  1. Вилучено стару папку,
  2. Скопіювали нове
  3. Скопіював папки .svn у кожну (у моєму випадку лише три) нову папку.

У моєму випадку теж проблема була пов’язана з видаленими .svn папками.

Вирішено.


Знайшли це приблизно за 4 години на очищенні SVN за допомогою плагіна Eclipse - хороші часи! Робоча копія заблокована - ні, це не так, придумайте краще повідомлення Затемнення людей, дякую.
Дарт Джон

1

Я спробував вставити папку .svn з підпапки в кореневу папку. Це працює!!!


1

Ось що я зробив:

  1. перейменувати магістраль у багажник_
  2. створити новий стовбур папки
  3. Повторно оформляйте замовлення та переривайте цей процес після того, як декілька файлів будуть виселені
  4. Перемістіть файли з trunk_ в trunk
  5. Робіть очищення svn
  6. Зробіть оновлення svn. Це оновить статус файлів, і тоді всі ваші файли будуть розроблені.

1

Я також зустрічаюся з цією проблемою в операції svn diff, вона була викликана неправильним шляхом до файлу, ви повинні додати, './'щоб вказати поточну файлову директорію.


0

svn: сховище у 'svn: // repourl / reponame / namename' має uuid 'm / reponame', але WC має 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Кожна підривна репо має унікальний ідентифікатор (uuid). Subversion використовує це для того, щоб переконатися, що репо насправді є тим самим, коли робиш такі речі, як комутація. Напевно, ви повинні змінити uuid на сервері таким, яким був раніше.


Зміна uuid на сервері - Як це зробити?
Vijay Dev

Чесно кажучи, поняття не маю, я просто припускаю, що це можна зробити. Ви перевірили, що в Книзі про підрив щось про це сказано?
JesperE

0

Можливо, це невідповідність формату робочої копії? Він змінювався між svn 1.4 та 1.5, і новіші інструменти автоматично конвертують формат, але потім більш старі більше не працюють із перетвореною копією.


0

Ви повинні видалити SVN - базовий файл зі свого проекту (це файли лише для читання). Завдяки цьому ви отримуєте цю помилку.

Перевірте новий проект ще раз, з’єднайте зміни (якщо такі є) свого старого SVN-проекту з новим за допомогою "Winmerge" та введіть зміни в останню перевірку.


0

@JesperE зазначає, що вам потрібно змінити uuid. Наступне має допомогти вам досягти цього.

На SVN 1.5+ ви можете виконати налаштування svnadmin; Ви можете перевірити, чи правильно він встановлений за допомогою svnlook uuid. На більш ранніх версіях SVN це складніший процес. Дивіться http://chestofbooks.com/computers/revision-control/subversion-svn/Managing-Repository-UUIDs-Reposadmin-Maint-Uuids.html

Крім того, UUID "m / reponame" виглядає підозріло. Я вважаю, що це має бути шістнадцятковий формат, як робоча копія, тому, можливо, ця дія покращить все навколо :-)

[Я спочатку коментував відповідь @ JesperE , але створив цю відповідь, щоб зробити її більш зрозумілою для людей та кориснішою для Google. Я з тих пір видалив свої коментарі. ]


0

У цієї ж проблеми виявилося, що у нас на цій же машині був Slik 1.6.2, а також черепаха. Черепаха була оновлена ​​(і оновила робочу копію), але Slik цього не зробила, тому Черепаха працювала нормально, але командні рядки не вдалося виконати:

svn: '.' - це не каталог робочої копії

Вилучивши і Tortoise, і Slik, а потім перевстановити Tortoise з увімкненими інструментами командного рядка, виправили це для мене.


0

для mac: - візьміть замовлення з боку сервера, і відкриється нове вікно, щоб вибрати каталог з вашої локальної машини, ніж помістити весь код у вибрану папку, потім відкрити svn локальну сторону та додати та здійснити проект


0

Сьогодні я знайшов те саме питання /FILE_NAME/ is not a working copyвранці, і я витратив більше двох годин на його вирішення. Після довгих RND і Google я знайшов якесь рішення, і це CHECKOUT.

  1. CHECKOUTвід SUBVERSIONмісцевого як новий проект.
  2. Змініть частину коду у файлі java та COMMIT проекту.
  3. Це працює для мене.

Сподіваємось, це допоможе вам.


0

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


0

Я просто натрапив на випадок, коли каталог .svn знаходиться на сервері nfs на іншій машині, а клієнт nfs не запускав службу блокування файлів ( lockd).

svn: E155007: '/mnt/svnworkdir' is not a working copy

Це минуло один раз lockd було запущено на хості nfs client.

Здається, що підривник може придумати краще повідомлення про помилку, коли у нього виникнуть проблеми із блокуванням файлів. Це було підривом 1.10.0


0

Я зробив новий замовлення з того самого проекту в іншому місці, потім скопіював з нього папку .svn і замінив свою стару папку .svn. Після цього зателефонувала функція оновлення svn, і все було синхронізовано належним чином.


-1

Видаліть папку .svn, яка присутня у вашій локальній машині. Натисніть значок Windows і введіть .svn, видаліть всю папку. Це працювало для мене.

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