2008-09-26 6 views
5

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

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

Но теперь у меня есть некоторые большие изменения, связанные с риском, и если я буду работать в Git, я создам ветку признаков в мгновение ока. Однако, работая в CVS, я попытался создать ветки функций в другом проекте и обнаружил, что все быстро получилось беспорядочным. У меня появилось множество филиалов, и я потерял информацию о том, какие ветки были синхронизированы, что необходимо для слияния и которые больше не использовались.

Итак, приближаясь ближе к вопросительному знаку, можно ли использовать функциональные ветви в CVS? Они слишком много хлопот, чтобы быть достойными этого, или я в конечном итоге в конечном итоге жалею, что не использовал их? Должен ли я укусить пулю и просто начать кодирование в HEAD, но согните мой процесс кодирования, чтобы внести изменения в наиболее ненавязчивый способ?

ответ

5

Если вы являетесь единственным разработчиком на ветке функций, вы можете просто использовать Git как свою систему разработки «песочницы», а затем, как только у вас произойдут изменения, объедините их в ваш репозиторий CVS.

Вы по-прежнему получаете преимущество управления источником для вашего промежуточного рабочего продукта.

+0

. Я принял это ответьте, потому что я так решил это сделать. – 2008-10-06 10:49:32

1

Относительно одной вещи, чтобы на самом деле закрыть особенность-ветвь, когда вы закончите с ней, как только вы объединили ее с основным багажником. В этом контексте закрытие просто означает отказ от ветви, а не реальное удаление.

После того как работа будет объединена, на самом деле нет необходимости, чтобы ветка «существовала».

Для того, чтобы быстро определить, какие ветки являются ветвями функций, я бы предложил иметь утечку условного обозначения «FEAT_MY_FEATURE» или «FEAT_20080926» (дата начала?). Это упростит игнорирование всех этих ветвей функций при просмотре структуры репозитория.

+0

Что это за «закрывающая» вещь, о которой вы говорите? Я думаю, что есть способ удалить ветви, но закрытие ветвей - это не то, о чем я слышал раньше. Googling предполагает, что это может быть основано на соглашениях: http://www.x.org/wiki/CvsBranchnames – 2008-09-26 11:29:00

+0

Все, что я имею в виду, закрывая, это «прекратить использовать их/забыть о них». Как только происходит слияние, откажитесь от ветки – Benoit 2008-09-26 12:05:29

3

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

Он также охватывает варианты кода линии owenership и политики, которые вы, возможно, хотели бы реализовать

+0

Есть много, чтобы читать. И документ старый. Но да, я хорошо посмотрю на это. – 2008-09-26 13:00:00

1

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

Документирование филиалов и назначение им определенных обязанностей помогло немного.

Нам пришлось создать инструмент, который поможет нам сменить изменения постепенно (одно изменение за раз, вместо слияния кончиков ветвей), потому что CVS не ведет себя хорошо, если две ветви расходятся.

Часто синхронизировать (не реже одного раза в неделю).

Я думаю, что лучший способ приблизиться к этому в ретроспективе - убедиться, что расхождение остается минимальным и разделяет рискованное развитие в разных вехах, например, используя Scrum.

Я также рекомендую вам прочитать SCM Patterns. В этих книгах есть много хороших советов.