Эффективный способ фиксации cvs с обновлением cvs, если это необходимо? - PullRequest
1 голос
/ 09 августа 2010

Во-первых, там, где я работаю, мы вынуждены использовать CVS, и у нас нет другого выбора.Я лично использую git.

Иногда я не всегда делаю cvs update на модуле, но я загружаю реальный файл с рабочего сервера, который гарантированно будет самым последним (99%случаев).

Я в итоге cvs commit обнаружил, что мне не удалось обновить, поэтому сценарий выглядит следующим образом:

cvs commit file.xml
cvs commit: Up-to-date check failed for 'file.xml'
mv file.xml 2
cvs update file.xml
rm file.xml
cvs mv 2 file.xml

Я думал о написании сценария оболочки, который автоматическиcvs обновляет файлы, которые я записываю, и фиксирует их ... но мне интересно, есть ли какой-нибудь нативный способ сделать это.

Любой совет, кроме использования cvs, приветствуется!

PS - И я использую !!:n, где n - это число.Я просто не использовал это в своем примере кода, так как он более разборчивый, как есть.

Ответы [ 3 ]

1 голос
/ 09 августа 2010

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

  1. Загрузка вручную может быть быстрее, но она также может пропустить изменения связанных файлов.
  2. Проблема, которую вы описываете: вы должны обновить в любом случае , чтобы заставить CVS принять вашу регистрацию.
  3. Предполагая, что вам все-таки удастся обойти это, я подозреваю, что вас все равно укусят незначительные ошибки CVS.

Если ваша работа должна быть изолированной, создайте ветку и работайте там.Перекручивание CVS вручную - дорога к слезам.

1 голос
/ 10 августа 2010

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

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

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

0 голосов
/ 09 августа 2010

Используйте CVS так, как это было задумано.Другими словами, cvs update до cvs commit.cvs update изменяет некоторую другую информацию в изолированной программной среде CVS, которая просто не копирует файл.

Вы действительно не должны иметь прямой доступ к хранилищу.Это позволяет много потенциальных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...