Что означает код состояния E в SVN?

#svn #subclipse

#svn #subclipse

Вопрос:

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

С другой стороны, что такое «препятствующий путь»? В длинном файле справки указано, что «Пути, препятствующие работе, сообщаются в первом столбце с кодом ‘E'».

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

Затем я добавил его в систему управления версиями, но это дало ему статус «версионный файл, который необходимо добавить в удаленный репозиторий», а не статус «нет локальных изменений».

Используя Subclipse, я выбрал Replace с> Latest из репозитория в родительской папке, и это произошло:

 revert -N C:/foo/Bar.java
    Reverted C:/foo/Bar.java
update C:/foo/Bar.java -r HEAD --force
    E   C:/foo/Bar.java
    Updated to revision 396.
    ===== File Statistics: =====
    Existing: 1
  

Ответ №1:

«Препятствующий путь» относится к существующему неверсированному файлу или папке по пути, по которому команде обновления необходимо скопировать версированный файл или папку.

Статус E появляется только при --force использовании флага, без флага обновление просто завершится неудачей. С помощью флага он оставляет файл в покое и позволяет вам решать, что с ним делать.

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

Ссылка: svn help update

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

Комментарии:

1. Кроме того, статус E будет отображаться во время обновления внешнего файла . В этом случае статус E является стандартным поведением, --force флаг не требуется.

Ответ №2:

E = Файл существовал до обновления.

http://plind.dk/2009/06/26/svn-status-cheatsheet/

«Неверсионные пути, препятствующие в рабочей копии, автоматически не вызывают сбой, если обновление пытается добавить тот же путь. Если препятствующий путь имеет тот же тип (файл или каталог), что и соответствующий путь в репозитории, он становится версионным, но его содержимое остается «как есть» в рабочей копии. Это означает, что неверсионные дочерние элементы каталога, препятствующие работе, также могут создавать препятствия и становиться версионными. Для файлов любые различия в содержимом между обструкцией и репозиторием рассматриваются как локальная модификация рабочей копии. Все свойства из репозитория применяются к препятствующему пути. Пути, препятствующие работе, сообщаются в первом столбце с кодом ‘E’.

Используйте параметр —set-depth, чтобы установить новую глубину рабочей копии для целей этой операции «.