2010-08-09 3 views
1

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

Иногда я не всегда делаю 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!

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

+0

Правильно ли я предполагаю, что предпоследняя строка вашего примера была предназначена для чтения 'rm file.xml', а не' cvs rm file.xml'? –

+0

ya, это правильно :) –

ответ

0

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

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

+0

В приведенном примере нет прямого доступа к репозиторию. Он полностью перемещается/переименовывается внутри рабочей копии. –

+0

@ Oliver: Ой, пропустил это. Конечно, это плохая практика, и в этом случае имеет отличную возможность сдуть изменения в QA. –

1

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

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

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

1

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

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

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

Смежные вопросы