CVS: получить состояние какой-либо ветки за определенную дату

У меня большой проект с ветками. Вся разработка сосредоточена в отрасли. Я хочу получить состояние этой ветки некоторое время назад, но не могу

 cvs up -r branch_name -D 2010-05-01

дает мне (в Makefile cvs status) липкий тег, но самую новую версию файла, а не 01.05.2010

 cvs up -D 2010-05-01 -r branch_name

игнорирует тег и обновляется до этой даты HEAD

 cvs up -r branch_name:2010-05-01

тоже не работает, он игнорирует дату и обновления текущего состояния ветки.


person osgx    schedule 21.07.2010    source источник
comment
Кажется, я помню, что был специальный синтаксис с использованием двоеточий, но я не могу найти его в документации прямо сейчас ...   -  person Oliver Giesen    schedule 22.07.2010
comment
хм, это задокументировано только для опции -j (т.е. слияния), но я думаю, что это может работать и для -r: cvs up -r branch_name:2010-05-01 (не проверено)   -  person Oliver Giesen    schedule 22.07.2010
comment
Оливер Гизен, пожалуйста, добавьте это в качестве ответа   -  person osgx    schedule 22.07.2010


Ответы (2)


cvs update -PdC -r BRANCH-NAME-HERE -D "Saturday, May 1, 2010 0:00:00 AM UTC"

Если знаете время, добавьте это ...

person Sagar    schedule 18.11.2010
comment
Что означают варианты P, d и C? - person osgx; 22.12.2011
comment
* P = удалить пустые каталоги * d = если в репо есть какие-либо каталоги, которых нет в рабочей области, создать их Не уверен, что такое C, но всегда использовал его для этого ... - person Sagar; 06.01.2012
comment
Похоже, что на тот момент это не дает всей ветки. Он дает только файлы, которые были изменены с момента исходной ветки. Итак, я обнаружил, что файлы отсутствуют, когда проверяю дату. Есть ли способ получить всю ветку? - person Mike Kaply; 24.06.2015
comment
В чем разница между вашей командой и командой из @osgx? Единственное различие, которое я вижу, - это порядок и форматирование даты. Это действительно имело значение? - person Bernhard; 13.09.2015
comment
P означает удаление пустых каталогов., D - создание каталогов, как это делает checkout. и C - перезаписывать локально измененные файлы чистыми копиями репозитория. Параметр D анализирует дату с помощью _1 _ / _ 2_ функций, определенных в _ 3_ и _ 4_ (из _ 5_; они должны иметь возможность анализировать 2004-04-29 20:24:22. Не знаю реальных различий с моим. - person osgx; 14.09.2015

Это должно помочь:

cvs up -r branch_name:2010-05-01

Синтаксис двоеточия задокументирован только для параметра -j, но вероятно работает и для -r.

person Oliver Giesen    schedule 22.07.2010
comment
Что-то странное, может быть, используется какой-то другой формат даты? Он обновляется до более старой версии, но не до версии от 01.05.2010. - person osgx; 22.07.2010
comment
Хм, есть parse_tagdate вызов в -r парсинге опций - cvs / src / update.c: 205 (case 'r': parse_tagdate (&tag, &date, optarg); ), дата которого должна быть проанализирована: cvs / src / main.c: 1146 Разобрать строку в формате TAG [: DATE] , где TAG может быть пустой строкой .; он анализирует дату с тем же _4 _ / _ 5_, что и в опции -D. - person osgx; 14.09.2015