svn: Item <folder>устарел - PullRequest
       25

svn: Item <folder>устарел

14 голосов
/ 10 мая 2010

[ответ будет автоматически выбран системой вознаграждения против моей воли]

Я использую 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 гораздо больше ошибок)

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

Ответы [ 7 ]

39 голосов
/ 21 мая 2010

Разве это не решено в Subclipse FAQ ?

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

  • Для файлов обычно довольно легко понять, как и почему это происходит.
  • Тем не менее, Subversion также делает версии папок, и обычно с папками эта проблема чаще всего возникает.
    Subversion не позволяет вам удалять / переименовывать папку ИЛИ изменять ее версионные свойства, НЕ РАЗМЕЩАЯ локальную копиюпапки находится в версии HEAD для папки в репозитории.

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

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

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


О " Смешанные ревизии рабочих копий ":

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

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

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

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

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

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

6 голосов
/ 10 мая 2010

я думаю, если вы ОБНОВИТЕ до этого, это должно работать .. это сработало для меня

2 голосов
/ 13 июля 2011

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

1) открыть представление репозитория SVN 2) перейдите в папку, от которой хотите избавиться, и удалите ее 3) вернуться к представлению Java 4) обновить папку в вашем проекте, которую вы фактически удалили / обновить ваш проект также должно работать

Это решило проблему в моем случае, так как обновление получило только те файлы, которые я удалил

2 голосов
/ 22 февраля 2011

Мое решение для этого было

  1. Удалить все элементы в папке
  2. Отправить в хранилище
  3. Обновить папку до HEAD
  4. Удалить папку в Eclipse
  5. Отправить в хранилище

Возможно, немного громоздко, но это всегда работает

2 голосов
/ 30 ноября 2010

Subclipse имеет много подобных проблем. Это работает 90% времени, и тогда это просто НЕ работает, как должно! Я использую subclipse, так как он очень хорошо интегрирован в eclipse, и когда у меня возникают проблемы или требуются какие-то большие движения в svn (например, объединение некоторых веток), я использую Tortoisse.

У меня была такая вещь с каталогом, как ты. Тогда я просто запускаю TortoiseSVN, как подсказывает @luiscolorado, и это помогло. Черепаха - отличный инструмент (он имеет много замечательных возможностей для различий, наложения патчей, получения патчей и т. Д.).

Сегодня у меня была проблема, когда я удалил файл, и кто-то изменил тот же файл! Затем Subclipse показывает конфликт (до этого момента все в порядке), поэтому я хотел вернуться! Но тогда кнопка возврата отсутствует (пропадает при бесконфликтном режиме!), Поэтому я должен выполнить слияние, а слияние не работает, выдает какую-то ошибку. Я не удосужился прочитать (возможно, мне следует прочитать и подать в виде ошибки для сопровождающих подклипа ;-(), я знал, что черепаха будет работать, и вы знаете, что это сработало. Была опция REVERT.

Итак @Tom Brito, попробуйте командную строку, попробуйте Tortoisse, а затем вы можете посмотреть журнал изменений подклипа и сообщить об ошибке. Я думаю, что subclipse просто забывает показывать нам некоторые изменения и обновления каталога (или он предназначен не для этого?), Но я могу ошибаться.

2 голосов
/ 10 мая 2010

Tom

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

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

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

Удачи.

0 голосов
/ 29 июля 2010

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

...