Фиксация в другую ветку с помощью commit -r - PullRequest
2 голосов
/ 30 апреля 2010

Позволяет ли CVS фиксировать файл в ветке, отличной от той, из которой он был извлечен? Страница man и некоторые сайты предполагают, что мы можем сделать cvs ci -r branch-1 file.c, но выдает следующую ошибку:

cvs commit: актуальная проверка не удалась для `file.c '
cvs [commit aborted]: сначала исправьте вышеуказанные ошибки!

Я сделал cvs diff -r branch-1 file.c, чтобы убедиться, что содержимое файла file.c в моих BASE и branch-1 действительно одинаково.

Я знаю, что мы можем вручную проверить с помощью cvs co -r branch-1, объединить с ним основную ветвь (и исправить любые проблемы слияния), а затем выполнить проверку. Проблема в том, что существует несколько ветвей, и я хотел автоматизировать вещи с помощью сценария. Эта тема , кажется, предполагает, что -r был удален. Кто-нибудь может это подтвердить?

Если ci -r не поддерживается, я думаю сделать что-то вроде:

  • Убедитесь, что версии филиала и базовая версия совпадают с cvs diff
  • Регистрация в текущей ветке
  • Хранить копию файла во временном файле
  • Для каждой ветви:
    • Выезд из филиала с -r
    • заменить файл временным файлом
    • Регистрация (будет идти ветка, так как -r липкая)
  • Удалить временный файл

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

1 Ответ

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

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

Что касается коммита -r -issue. Мне кажется, что это экспериментальная функция, и на самом деле вам лучше использовать:

cvs update -r <branch> <file>
cvs update -j <ver> -j <ver> <file>
cvs commit <file>

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

...