Принудите команду проверки SVN, чтобы перезаписать текущие файлы

Я добавляю существующий сайт в SVN.

Файлы уже существуют на веб-сервере, и теперь в репозитории существуют идентичные копии (файлы конфигурации).

Я хочу преобразовать каталог веб-сервера в рабочую копию SVN, но когда я запустил:

svn checkout http://path.to/svn/repo/httpdocs .

Я получаю сообщение об ошибке:

svn: Не удалось добавить файл '': объект с тем же именем уже существует

Как сообщить SVN просто перезаписать те файлы, содержимое которых одинаково?

Ответ 1

Попробуйте параметр --force. svn help checkout дает детали.

Ответ 2

svn checkout --force svn://repo website.dir

затем

svn revert -R website.dir

Будет проверяться поверх существующих файлов в website.dir, но не перезаписывать их. Затем возврат будет перезаписан. Таким образом, вам не нужно забирать сайт, чтобы завершить его.

Ответ 3

Это можно сделать довольно легко. Все, что я сделал, это переместить существующий каталог, а не под управлением версиями, во временный каталог. Затем я проверил версию SVN на свое правильное имя каталога, скопировал файлы из временного каталога в каталог SVN и вернул файлы в каталоге SVN. Если это не имеет смысла, есть пример ниже:

/usr/local/www

mv www temp_www
svn co http://www.yourrepo.com/therepo www
cp -pR ./temp_www/* ./www
svn revert -R ./www/*
svn update

Надеюсь, это поможет и не уверен, почему просто обновление SVN не изменило файлы?

Ответ 4

У меня не было 1.5 доступных мне, потому что я не контролирую компьютер. Файл, который вызывал у меня проблему, оказался файлом .jar в каталоге lib. Вот что я сделал для решения проблемы:

rm -rf lib
svn up

Это основано на ответе Неда. То есть: я просто удалил вспомогательную директорию, которая вызывала у меня проблему, а не весь репозиторий.

Ответ 5

Вытащите из репозитория в новый каталог, затем переименуйте старый в old_crufty, а новый - в my_real_webserver_directory, и вы хорошо пойдете.

Если вы намерены, что каждый файл находится в SVN, то это хороший способ проверить вашу теорию. Если вы хотите, чтобы некоторые файлы не были в SVN, используйте метод копирования/вставки Брайана.