SVN застрял в сломанном состоянии - PullRequest
2 голосов
/ 13 января 2012

Я недавно выполнил svn add Foo/, который не удался, потому что был файл (не каталог) с именем Foo/.svn

Не задумываясь, я сделал rm Foo/.svn; svn add Foo/

Это не удалось, потому что "Foo уже находится под контролем версии", хотя svn status показывает

~ Foo

вместо

A Foo

Я не могу svn commit из-за этого. svn add --force Foo/ не помогает.

Как я могу это исправить?

Ответы [ 4 ]

3 голосов
/ 01 февраля 2012

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

An svn revert Foo заставляет Svn удалить его из своих записей.

Если вы сейчас запросите статус, ваш каталог будет

?       Foo

Затем вы можете повторить попытку svn add, и она будет работать.

0 голосов
/ 07 февраля 2012

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

  1. svn info чтобы получить номер редакции рабочей копии, вы увидите что-то вроде Revision: 94168
  2. mv Foo Foo.bak для резервного копирования каталога broken Foo
  3. svn up -r 94168 Foo для повторной проверки Foo из удаленного репозитория, пожалуйста, замените 94168 на ваш фактический номер ревизии
  4. rsync -av --exclude='.svn' Foo.bak/ Foo/, чтобы переопределить недавно извлеченный Foo / с файлами в предыдущей резервной копии Foo.bak, но сохранить правильные метаданные .svn.
  5. svn status Foo, тогда вы должны увидеть все ваши локальные изменения (если вы действительно внесли изменения) в Foo

объединение внутренних файлов не требуется.

0 голосов
/ 07 февраля 2012

Вы можете переименовать каталог, в котором находится Foo/. Затем выполните svn up и объедините изменения вручную. Затем вы можете добавить Foo/ каталог.

0 голосов
/ 13 января 2012

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

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