Svn: Элемент <папкa> устарел

[ответить авто-выбранным системой бонусов против моей воли]

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

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

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

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

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

Не относится ли это к часто задаваемые вопросы подзапроса?

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

  • Для файлов это, как правило, довольно легко понять, как и почему это происходит.
  • Тем не менее, Subversion также содержит папки версий, и обычно это папки, чаще всего возникающие в этой папке. Subversion не позволяет вам удалять/переименовывать папку или изменять свои версии, если UNLESS локальная копия этой папки находится в ревизии HEAD папки в репозитории.

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

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

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


О " Смешанные рабочие копии для редактирования":

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

Одним из основных правил Subversion является то, что действие "push" не вызывает "pull" и наоборот.
Просто потому, что вы готовы отправлять новые изменения в репозиторий, это не значит, что вы готовы получать изменения от других людей.

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

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

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

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

Ответ 3

Я думаю, что если вы ОБНОВЛЯТЬ перед этим, это должно сработать.. это действительно сработало для меня

Ответ 4

Том,

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

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

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

Удачи.

Ответ 5

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

  • Удалить все элементы в папке
  • Commit to repository
  • Обновить папку HEAD
  • Удалить папку в Eclipse
  • Commit to repository

Немного громоздко, может быть, но он всегда работает

Ответ 6

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

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

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

Ответ 7

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