svn: Объект <папка> устарел

[ответ, выбранный автоматически системой поощрения против моей воли]

Я использую subclipse, и всегда когда удаляют папку в Eclipse и пытаются фиксировать его, следующее ошибочное повышение:

svn: Item <folder> is out of date
svn: DELETE of <folder>: 409 Conflict (http://myintranet)

Удаление и фиксирование через командную строку хорошо работают, но что случилось с выполнением его через subclipse? Кто-либо больше испытывает эту проблему?

(Я испытал эту проблему в Ubuntu 9.10 и 10.04; последняя версия Eclipse; и subclipse 1.4 - как следующие версии subclipse имеет намного больше ошибок),

- обновленный: когда я удаляю папки, не файлы

14
задан Tom Brito 29 July 2010 в 13:08
поделиться

4 ответа

Том,

Вы можете попробовать TortoiseSVN и вручную обновить рабочую область проекта. Найдите расположение каталога вашего проекта на жестком диске, а затем попробуйте TortoiseSVN (или командную строку, если вы предпочитаете), чтобы выполнить обновление.

Частой причиной этой проблемы является удаление каталога без «информирования» SVN. Например, если вы вручную удалите каталог с помощью операционной системы вместо использования SVN, у вас возникнет эта проблема.

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

Удачи.

2
ответ дан 1 December 2019 в 06:10
поделиться

я думаю, если вы UPDATE до этого, это должно сработать... у меня сработало

6
ответ дан 1 December 2019 в 06:10
поделиться

Разве это не рассматривается в FAQ по Subclipse ?

Каждый раз, когда вы видите «устарело» в сообщении об ошибке, это означает, что версия элемента в репозитории новее, чем копия в вашей локальной рабочей копии .
Решение всегда будет заключаться в запуске обновления , чтобы ваша рабочая копия была в актуальном состоянии с репозиторием, а затем снова выполнить фиксацию (при условии, что обновление не вызвало конфликтов).

  • Для файлов обычно довольно легко понять, как и почему это происходит.
  • Однако Subversion также создает версии для папок, и обычно эта проблема возникает с папками.
    Subversion не позволяет вам удалять / переименовывать папку ИЛИ изменять ее версионные свойства, ЕСЛИ локальная копия папки не находится в HEAD-версии папки в репозитории.

Ваш следующий вопрос может быть таким:
«Хорошо, я могу это понять, но почему моя папка устарела? Я единственный человек, работающий в этом репозитории. »

Это правильный вопрос, ответ заключается в пути что Subversion работает.
Когда вы фиксируете изменение в файле, ревизия файла в вашей рабочей копии обновляется до этой новой ревизии, когда фиксация завершается, однако версия родительской папки (ов) этого файла не обновляется.
Это связано с тем, что в этой папке могли быть добавлены / удалены другие файлы, и до тех пор, пока вы не запустите обновление, папка на самом деле не соответствует этой новой версии.
Это называется « рабочими копиями смешанной редакции ».

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


О « Рабочих копиях смешанных ревизий »:

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

Одно из фундаментальных правил Subversion состоит в том, что действие «выталкивание» не вызывает «притяжения», и наоборот.
Тот факт, что вы готовы отправить новые изменения в репозиторий, не означает, что вы готовы получать изменения от других людей.

Дело в том, что каждый раз, когда вы запускаете svn commit, ваша рабочая копия получает некоторую смесь ревизий .
То, что вы только что совершили, помечается как имеющее более крупную рабочую версию, чем все остальное. После нескольких коммитов (без промежуточных обновлений) ваша рабочая копия будет содержать целую смесь ревизий

(и именно поэтому, я считаю, вы не можете воспроизвести свое "устаревшее" сообщение при последующих коммитах с удаленной папкой: ваше обновление действительно разрешило состояние «смешанной ревизии».)

Смешанные ревизии имеют ограничения

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

39
ответ дан 1 December 2019 в 06:10
поделиться

Единственный способ работы в тех же случаях - через командную строку. Подклипс все еще не идеален ..

0
ответ дан 1 December 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: