Переместить файл в CVS без сброса номера редакции - PullRequest
9 голосов
/ 25 сентября 2008

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

Я, наверное, должен был упомянуть, что у меня нет доступа к хранилищу, поэтому все, что требует, не помогает мне, но может помочь другим.

Ответы [ 6 ]

22 голосов
/ 25 сентября 2008

Общепринятым способом достижения этого эффекта является выполнение следующих шагов. Технический термин для этого - repocopy.

  1. Войдите на сервер, на котором размещено хранилище CVS, и скопируйте (не перемещайте) файл хранилища из нужного вам места в новое местоположение.
  2. На клиентской стороне cvs удалите файл из старого расположения.
  3. На клиентской стороне cvs обновляет содержимое каталога в новом месте (чтобы файл там отображался).
  4. На стороне клиента выполните принудительную фиксацию cvs (используя флаг -f) скопированного файла, чтобы зарегистрировать факт его повторного копирования (добавьте комментарий к журналу на этот счет).

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

9 голосов
/ 25 сентября 2008

Нет способа перемещать файлы с помощью команд только для клиента. Вам необходим доступ к файловой системе серверов и вы можете переместить файл ", v" в хранилище в новое место. Это сохранит всю историю, поскольку CVS записывает каждую ревизию и их комментарии в одном файле.

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

Как правило, с этим подходом нет непосредственных проблем, однако вы должны учитывать последствия, если решите проверить более раннюю версию вашего продукта, которая может опираться на предыдущую структуру каталогов!

Здесь другие системы контроля версий, такие как Subversion, имеют явное преимущество.

3 голосов
/ 25 сентября 2008

Ну, самый простой способ - подключиться к серверу cvs, где находится ваше хранилище, и просто переместить ваши папки / файлы с помощью mv (при условии, что машина * nix). таким образом, история файла будет сохранена.

3 голосов
/ 25 сентября 2008

Онлайн-руководство по содержит подробности о том, как это сделать:

Обычный способ перемещения файла - ввести команду cvs rename.

$ cvs переименовать старый новый
$ cvs commit -m "Переименовано старое в новое"

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

Эта функция поддерживается только на серверах CVSNT 2.0.55 и более поздних версий.

2 голосов
/ 25 сентября 2008

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

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

mv oldfile.c newfile.c cvs delete oldfile.c cvs add newfile.c

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

cp oldfile.c, v newfile.c, v

перейдите в ваш рабочий каталог и сделать обновление cvs; newfile.c будет появиться как новый файл. Теперь вы можете резюме удалите oldfile.c и подтвердите.

2 голосов
/ 25 сентября 2008

Разве это не один из известных недостатков CVS - нет встроенного механизма для перемещения файлов? Однако прошло много времени с тех пор, как я его использовал, поэтому, возможно, сейчас есть решение.

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

...