Переместить файл в CVS без сброса номера редакции

StackOverflow https://stackoverflow.com/questions/133721

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Вероятно, мне следовало упомянуть, что у меня нет доступа к репозиторию, поэтому все, что требует этого, не помогает мне, но может помочь другим.

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

Тот Самый онлайн-руководство по составлению резюме имеет некоторые подробности о том, как это сделать:

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

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

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

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

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

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

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

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

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

mv старый файл.c новый файл.c cvs удалить старый файл.c cvs добавить новый файл.c

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

cp старый файл.c,v новый файл.c,v

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top