Как восстановить контроль svn, если папка .svn повреждена? - PullRequest
25 голосов
/ 19 сентября 2008

У меня есть пара больших проверок, когда папка .svn была повреждена, поэтому я получаю сообщение об ошибке «При очистке не удалось обработать следующий путь…». И я больше не могу фиксировать или обновлять файлы в этом каталоге .

Я бы просто удалил и снова сделал оформление заказа, но весь каталог закончился.

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

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

Ох .. Я большой поклонник TortoiseSVN или командной строки для Linux.

Мысли

Ответы [ 7 ]

21 голосов
/ 19 сентября 2008

Если у вас есть изменения в файлах, и вы не можете их удалить, вы можете использовать функцию Subversion 1.5, которая позволяет вам «оформить заказ с препятствиями».

Просто удалите каталог .svn в этом каталоге и:
(вам не нужно удалять внутри каталогов при использовании файлов --depth, спасибо, Эрик)

В случае, если поврежденный каталог был верхним каталогом рабочей копии:

svn checkout --depth files --force REPOS WC

И если каталог выше сломанного все еще версионен, запустите:

svn update --depth files --force WC

в этом каталоге.
В обоих примерах REPOS - это URL-адрес в хранилище, соответствующий поврежденному каталогу, а WC - это путь к каталогу.

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

5 голосов
/ 19 сентября 2008

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

3 голосов
/ 19 сентября 2008

Сделайте резервную копию папки, в которой отсутствует .svn

Затем удалите папку

Если это корень проверки, вам придется повторно оформить заказ

Если это не рут, просто запустите обновление из каталога выше.

Затем переместите папку для резервного копирования поверх нее. (В идеале не перемещать назад папки .svn)

Продолжайте работать и не забудьте обновить / зафиксировать!

2 голосов
/ 19 сентября 2008

Я сталкивался с этим в прошлом и не нашел никакого рабочего решения, кроме «ядерной опции» (т.е. удалите каталог и повторите проверку).

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

1 голос
/ 30 октября 2010

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

1 голос
/ 19 сентября 2008

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

0 голосов
/ 11 ноября 2008

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

Я в основном удалил то, что у меня было, и повторил оформление заказа. Это отнимает много времени, но я действительно хочу убедиться, что svn понятен, прежде чем я смогу снова начать работать. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...