Подтвердить что ты не робот

Ошибка SVN: устаревший каталог

У меня проблема, которая кажется очень простой, но ее трудно решить. Я получаю указанную ошибку после удаления каталога. Я еще не нашел решения для разрешения конфликта. Вот как это происходит:

svn add dir
svn add dir/file1
svn commit
svn add dir/file2
svn commit
svn delete dir
svn commit
--> commit failed  
--> Directory '/dir' is out of date

Очевидное решение "svn update" не работает. После обновления svn следующая ошибка завершается с помощью:

Commit failed
Directory '/dir' remains in conflict.

В то время я нашел решение, но это немного громоздко:

svn resolve --accept working dir
svn commit --> still fails
svn update
svn commit --> still fails
svn resolve --accept working dir
svn commit --> NO PROBLEM!

Два вопроса: - Может кто-нибудь объяснить это поведение, потому что мне очень интересно это - эта проблема возникает в perl script в гораздо более сложной ситуации. Может ли кто-нибудь дать мне простое решение с "выполнимо" в perl script?

4b9b3361

Ответ 1

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

Если я правильно понимаю subversion, проблема такова:

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

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

Чтобы решить:

Сделайте svn update после добавления файла, но перед удалением каталога

В общем случае, если вы не хотите вносить какие-либо изменения, вы можете ограничить обновление самой директорией: svn up --depth empty dir.

Ответ 2

Просто создайте svn update, а затем ваша фиксация должна работать.

Ответ 3

Вам просто нужно обновить, а затем зафиксировать

Ответ 4

Вы пробовали svn up dir перед выполнением окончательного коммита?

Ответ 5

Чтобы обойти эту проблему, я использовал "svn revert", а затем снова совершил фиксацию, которая должна избавиться от содержимого в then do 'svn delete' и снова зафиксировать. У меня возникла проблема с переименованием каталога, но, надеюсь, это сработает.

Ответ 6

Сделайте обновление, очистку и затем зафиксируйте.

Ответ 7

Аналогичная проблема я столкнулся со свежей рабочей областью:

$ svn delete dir/file
D         dir/file
$ svn ci -m "comment1"
Deleting       dir/file
$ svn delete dir/
D         dir
$ svn ci -m "comment2"
Deleting       dir
svn: Commit failed (details follow):
svn: Item 'dir' is out of date

Чтобы устранить проблему, я повторно обновил источники и использовал команду "удалить URL":

$ svn delete --force https://server/path.../dir
$ svn update