2014-09-24 3 views
0

У меня вопрос, связанный с пометкой в ​​CVS (я знаю, что есть лучшие инструменты, чем cvs, но это то, что используется в моей компании).Теги CVS, как они точно работают?

У меня есть проект в CVS, и в последние месяцы люди применяли к нему множество тегов. Мне пришлось внести изменения с базового уровня, который не был последним тегом. Так что у вас есть следующие теги в CVS:

Project_V1 Project_V2 Project_V3

Клиент попросил пару изменений, основанных на Project_V2.

Мои вопросы:

1) Если я совершаю свои изменения, а затем применить новый тег, будут ли эти изменения будут применяться поверх Project_V3 или просто на вершине Project_V2? 2) Если это так, я думаю, (то есть, они применяются на вершине Project_V3) есть ли способ избежать этого и есть что-то вроде:

Project_V1 Project_V2 Project_V2_B Project_V3

так, что последняя версия программного обеспечения, отмеченного как Project_V3, не получает эти изменения?

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

Благодаря M

ответ

0

Ваш сценарий запрашиваемая идеальный случай для разветвления.

Другой мудрый, вы, возможно, придется сделать некоторые уродливые код обратно-аутов и повторно возвраты

 
Lets take one file and see how the history grows. 
File A 
    rev 1.1 
    rev 1.2 -> Label Project_V1 
    rev 1.3 
    rev 1.4 
    rev 1.5 -> Label Project_V2 
    rev 1.6 
    rev 1.7 -> Label Project_V3 

Теперь, так как вы хотите, чтобы сделать изменения в файл оборотов 1.5, Вы можете переходить от ярлыка Project_V2 и создавать изменения файлов. Теперь пересмотр файла будет 1.5.1.2.

 
File A 
    rev 1.1 
    rev 1.2 -> Label Project_V1 
    rev 1.3 
    rev 1.4 
    rev 1.5 -> Label Project_V2 -> 1.5.1.2 -> Label Project_V2_B 
    rev 1.6 
    rev 1.7 -> Label Project_V3 

Другое решение (которое я лично не нравится) заключается в следующем:

 
overwrite the latest files with files checked out using Label Project_V2 
make the necessary changes, apply label Project_V2_B. 
Recheck-in the files from Label Project_V3. 
 
File A 
    rev 1.1 
    rev 1.2 -> Label Project_V1 
    rev 1.3 
    rev 1.4 
    rev 1.5 -> Label Project_V2 
    rev 1.6 
    rev 1.7 -> Label Project_V3 
    rev 1.8 (checkout from label Project_V2) 
    rev 1.9 -> Label Project_V2_B 
    rev 1.10 -> (check out from label Project_V3 and recheck-in) -> apply label again Project_V3 

Это делает грязный архив.