Ошибка SVN - не рабочая копия


215

Недавно наш сервер SVN был изменен, и мы сделали переключатель SVN.

Поскольку рабочая копия имела огромное количество неверсионных ресурсов, рабочая копия была заблокирована, и мы начали переключать папку за папкой для всех папок в svn, что прекрасно работает.

Но на самом верхнем уровне хранилища, когда я пытаюсь обновить файлы, я получаю svn: Working copy '.' заблокированная ошибка и очистка тоже не помогают. Когда я делаю очистку, я получаю такие ошибки - svn: 'content' не является каталогом рабочей копии

Свежий заказ не вариант вообще. Существуют ли другие способы очистки и снятия замков и полного переключения?

РЕДАКТИРОВАТЬ: последний абзац в ответе JesperE

Если вы получаете «не рабочую копию» при выполнении рекурсивной «очистки svn», я предполагаю, что у вас есть каталог, который должен быть рабочей копией (т. Е. Каталог .svn на верхнем уровне говорит об этом), но в нем отсутствует его собственный каталог .svn. В этом случае вы можете просто удалить / переместить этот каталог, а затем выполнить локальное обновление.

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

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

svn: хранилище в 'svn: // repourl / reponame / foldername' имеет uuid 'm / reponame', но WC имеет 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Любые идеи ?


для пользователей R, сталкивающихся с этой ошибкой: github.com/wch/r-source/wiki#adding-svn-information
isomorphismes

Ответы:


126

Если вы получаете «не рабочую копию» при выполнении рекурсии, svn cleanupя предполагаю, что у вас есть каталог, который должен быть рабочей копией (то есть .svnкаталог верхнего уровня говорит об этом), но в нем отсутствует собственный .svnкаталог. В этом случае вы можете просто удалить / переместить этот каталог, а затем выполнить локальное обновление (т.е. rm -rf content; svn checkout content).

Если вы получаете сообщение not a working copyоб ошибке, это означает, что Subversion не может найти правильный .svnкаталог там. Проверьте, есть ли .svnкаталог вcontents

Идеальным решением является новая проверка, если это возможно.


1
Я согласен, сделайте новую проверку вместо того, чтобы пытаться переместить вашу рабочую копию с репо.
Tigraine

2
Моя проблема в том, что я мигрировал на новый сервер и восстановил свои резервные копии файловой системы с работой, которая еще не была выполнена, и использовал svnadmin для фильтрации старых проектов, которые мне больше не нужны. Так что мой репозиторий содержит всю необходимую мне информацию, но имеет новый UUID. В этом случае я просто собираю tar-файл с измененными файлами, получаю новую проверку и затем распаковываю.
Драрок

Ваше предложение в первом абзаце не работает в моей системе (W7 + Cygwin). Скорее обновление rm & svn сделало это.
Юкка Далбом

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-файлами.


Как это сделать ? Пожалуйста, объясните вкратце
Ананд Савьяни

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 - хорошие времена! Рабочая копия заблокирована - нет, нет, придумайте лучшее сообщение Eclipse, спасибо.
Дарт Джон

1

Я попытался вставить папку .svn из подпапки в корневую папку. Оно работает!!!


1

Вот что я сделал:

  1. переименовать сундук в trunk_
  2. создать новую папку ствола
  3. Повторная проверка и прерывание процесса после извлечения нескольких файлов
  4. Переместите файлы из trunk_ в trunk
  5. Сделать свн уборку
  6. Сделай svn обновление. Это обновит статус файлов, после чего все ваши файлы будут обновлены.

1

Я также столкнулся с этой проблемой в работе svn diff, она была вызвана неправильным путем к файлу, вы должны добавить, './'чтобы указать текущий каталог файла.


0

svn: хранилище в 'svn: // repourl / reponame / foldername' имеет uuid 'm / reponame', но WC имеет 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Каждый репозиторий Subversion имеет уникальный идентификатор (uuid). Subversion использует это, чтобы удостовериться, что репо фактически одинаково при выполнении таких вещей, как переключение. Вам, вероятно, следует изменить uuid на сервере таким же, как и раньше.


Изменение uuid на сервере - Как это сделать?
Виджей Дев

Честно говоря, я понятия не имею, я просто предполагаю, что это может быть сделано. Вы проверяли в Книге Subversion что-нибудь об этом?
JesperE

0

Может ли это быть несоответствие формата рабочей копии? Он изменился между SVN 1.4 и 1.5, и новые инструменты автоматически конвертируют формат, но тогда старые не будут работать с преобразованной копией.


0

Вы, должно быть, удалили базовый SVN-файл из вашего проекта (который предназначен только для чтения). За счет этого вы получаете эту ошибку.

Проверьте новый проект снова, объедините изменения (если таковые имеются) вашего старого проекта SVN с новым, используя "Winmerge", и зафиксируйте изменения в вашем последнем извлечении.


0

@JesperE упоминает, что вам нужно изменить uuid. Следующее должно помочь вам достичь этого.

На SVN 1.5+ вы можете сделать svnadmin setuuid; Затем вы можете проверить правильность установки с помощью 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 и Tortoise на той же машине. Черепаха была обновлена ​​(и обновила рабочую копию), но Slik - нет, так что черепаха работала хорошо, но командные строки не работали с:

svn: '.' не является каталогом рабочей копии

Удаление Tortoise и Slik, а затем переустановка Tortoise с включенными инструментами командной строки исправили это для меня.


0

для Mac: - возьмите извлечение со стороны сервера, и откроется новое окно для выбора каталога на вашем локальном компьютере, затем поместите весь код в выбранную папку, затем откройте svn local side, добавьте и зафиксируйте проект


0

Сегодня /FILE_NAME/ is not a working copyутром я обнаружил ту же проблему и потратил более двух часов на ее решение. После долгих RND и Google я нашел какое-то решение, и это CHECKOUT.

  1. CHECKOUTот SUBVERSIONместного до нового проекта.
  2. Измените часть кода в Java-файле и зафиксируйте проект.
  3. Это работает для меня.

Надеюсь, это поможет вам.


0

Недавно я использовал другие разработчики Mac, у меня была такая же ситуация, проблема была; Сначала мне нужно было набрать get repo path to Terminal, но я этого не сделал, а потом сказать, каковы ваши имя пользователя и пароль.


0

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

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

Это прошло, как только lockdбыло запущено на клиентском хосте nfs.

Кажется, что Subversion может выдать лучшее сообщение об ошибке, когда он имеет проблемы с блокировкой файлов. Это была Subversion 1.10.0


0

Я сделал новый заказ из того же проекта в другое место, затем скопировал из него папку .svn и заменил ее старой папкой .svn. После этого вызывается функция обновления svn, и все синхронизируется должным образом.


-1

Удалите папку .svn, которая присутствует на вашем локальном компьютере. Нажмите значок Windows и введите .svn, удалите всю папку. Это сработало для меня.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.