2012-01-16 3 views
1

Я использую ClearCase 7.1.2 и работаю над проектом. В какой-то момент задолго до того, как я пришел, появилась ветка (назовем ее «пилотом»), которая в конечном итоге стала производственным кодом, в то время как основное дерево осталось позади. В этот момент мне нужно сделать ветку пилота для реализации новой функции, но я столкнулся с проблемой.mkelem только на ветке

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

Сейчас моя конфигурация спецификации выглядит примерно так (идущий из памяти):

elements * CHECKEDOUT 
elements * main/0 -mkbranch pilot 
elements * main/pilot 
elements * main/LATEST 

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

+0

Я думаю, что вы только показали нам приближение к вашему cspec, так как обычно ссылки на 'main' будут иметь префикс'/'. Убедитесь, что вы используете рабочий cspec (или подмножество рабочего cspec), чтобы мы могли быть более уверенными в том, что у вас есть, и мы пытаемся справиться. –

ответ

2

Вы найдете примеры на config_spec man page, а также Config spec rules for elements in subbranches.

Что вам нужно сделать, это первым поставить метку на pilot ветви (т.е. на всех элементы, присутствующие в вашей точке зрения на pilot отрасли), для того, чтобы сделать новые версии с фиксированной точкой во время.

Тогда:

elements * CHECKEDOUT 
elements * .../my_feature_branch/LATEST 
elements * LABEL_ON_PILOT -mkbranch my_feature_branch 
elements * main/LATEST -mkbranch my_feature_branch 

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

+0

Итак, первое, что вам нужно сделать после создания ветки, - слияние изменений между LABEL_ON_PILOT и .../pilot/LATEST на ветку функций. Разве это не просто макияж? Вы бы применили тот же аргумент к ветвлению из/main/LATEST? –

+0

Да, контроль версий не был жестким для стандартов в этом проекте, поэтому некоторые проблемы. В идеале я бы не был в этом месте, потому что пилотная линия будет объединена с основной, так как главная - это плохие плоды. Единственная причина, по которой я нахожусь в последнее время, я боюсь пропустить любые исправления ошибок и clobber/оставить их после релиза. Не идеальная среда, но примерно в 100 раз лучше, чем мое последнее занятие. – Rig

+0

@JonathanLeffler: «первая вещь»? Нет, но по крайней мере вы можете легко сравнить работу с «pilot» и работать с «my_feature_branch». И объедините все, что захотите. – VonC

1

Я думаю, что я бы ожидал увидеть CSPEC так:

elements * CHECKEDOUT 
elements * .../my_feature_branch/LATEST 
elements * .../pilot/LATEST -mkbranch my_feature_branch 
elements * /main/LATEST -mkbranch my_feature_branch 

-mkbranch на последней строке отвечает на ваш вопрос. Строка 2 гарантирует, что вы используете свою ветку функций, когда она существует. Изменение в строке 3 должно работать лучше, чем ваша строка 2 (если CC 7.1.2 не имеет некоторых новых сокращений, которые позволяют работать с вашей старой версией, я, кажется, использую 7.0.x).


Лечить это мой ответ с некоторой осторожностью - см answer на VonC альтернативный способ сделать это. Ясно, что есть некоторые проблемы, которые VonC видит с этим подходом. Тем не менее, команда, над которой я работаю, делает это именно в течение многих лет (с 1994 года), не сталкиваясь с проблемами, которые имеют VonC. Кроме того, требуется около 12 часов, чтобы применить полную метку к набору VOB, которые составляют наш набор продуктов (где-то около десятка больших многостраничных VOB, по предположению). Я проверил время с нашим гуру CC, и он отметил, что мы не будем мигрировать в UCM в ближайшее время, частично из-за этой проблемы с маркировкой.

Таким образом, лучшая современная практика с небольшими VOB может использовать метку, созданную специально как отправную точку для ветви признака, но не все системы используют их. Эмпирически метка не нужна. Я не уверен, что другие «лучшие практики» (или «худшие практики, которые компенсируют отсутствие лучших практик»), которые у нас есть, что мешает нам сталкиваться с проблемами.

+0

Спасибо, я расскажу, что получится. – Rig

+0

Oy, я думаю, это правильно, но у меня проблемы с групповыми разрешениями. Это все кажется настолько сложным по сравнению с моим временем с subversion и git ... – Rig

+0

@Rig Я бы не рекомендовал делать ветку из 'LATEST' другой ветки. Действительно опасная практика. – VonC

Смежные вопросы