Политика контроля исходного кода

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

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


person boutta    schedule 23.09.2008    source источник


Ответы (8)


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

person Richard    schedule 23.09.2008
comment
Ссылка мертвая. Думаю, это правильный вариант: www.hillside.net/plop/plop98/final_submissions/P37.doc - person Nippysaurus; 10.08.2012

Нет пустых сообщений фиксации.

person Vilmantas Baranauskas    schedule 23.09.2008

В нашем проекте мы используем несколько практических правил в качестве политики коммитов. Эти правила помогают нам держать каждую ревизию в состоянии готовности к развертыванию. Наши правила аналогичны политике фиксации KDE, опубликованной здесь: http://techbase.kde.org/Policies/SVN_Commit_Policy. Каждая фиксация должна быть (от более высокого до более низкого приоритета):

  • Успешно проверено (скомпилировано, протестировано, рассмотрено, FxCop'ed и т. Д.)
  • Атомарный (должен содержать только одно логическое изменение, например исправление одной ошибки, рефакторинг и т. Д.)
  • Без избыточности (не следует добавлять неиспользуемый код, не фиксировать закомментированный код, не удалять его, не фиксировать случайные изменения формата и т. Д.)
  • Правильно и полностью прокомментировано
  • Соответствующая текущая фаза разработки (например, в ветках поддержки версий нельзя допускать рефакторинга)
  • Как можно меньше, чтобы соответствовать предыдущим правилам.

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

person Eugenek    schedule 24.09.2008

Я отлично использовал книгу Practical Perforce. Хотя вы, возможно, не работаете с Perforce, я думаю, что глава 7 (Как развивается программное обеспечение) и глава 8 (Основы управления строкой кода) могут быть очень полезны. Возможно, вы сможете просмотреть их в Google Книгах.

У Perforce также есть много замечательных статей на эту тему. Моделирование жизненного цикла программного обеспечения пишет о политиках.
Perforce complete техническая документация.

И нет, я не работаю ни с Perforce.

Удачи Томас

person homaxto    schedule 23.09.2008

По сути, это одно и то же:
Контроль версий для нескольких Agile-команд
Стратегия ветвления управления конфигурацией

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

Существует некоторая проблема с Subversion, поскольку она не может обрабатывать Циклическое слияние, но его можно обойти, удалив ветвь разработки после каждой реинтеграции обратно в магистраль (не имеет отношения к другим системам контроля версий)

person Pini Reznik    schedule 24.09.2008

Моя любимая политика: «Никаких подрывных коммитов, которые не ссылаются на билеты + комментарии Auto Trac для каждой фиксации»: http://trac.edgewall.org/browser/trunk/contrib/trac-post-commit-hook

person rjurney    schedule 23.09.2008
comment
Может быть, просто возможно, в действительно закрытой среде обслуживания. Я бы предпочел, чтобы всем разработчикам было предложено зарегистрироваться. Получите автоматизированную систему тестирования и сборки и убедитесь, что у вас есть аудит конфигурации для базовых показателей, но не отговаривайте коммитов. - person Hamish Smith; 23.09.2008

Не фиксируйте / не фиксируйте изменения, которые нарушают сборку.

person core    schedule 23.09.2008

Зафиксируйте для каждого изменения, а не для каждого файла.

Это дает следующие преимущества:

  • Позже вы увидите, почему эта единственная строка была изменена именно в этом файле (ага, это было исправление ошибки № 123). Если вы фиксируете для каждого файла, то сообщения о фиксации обычно описывают изменения, внесенные в файл, что вы в любом случае можете увидеть с помощью diff. Если вы фиксируете каждое изменение, сообщения фиксации обычно объясняют, почему это изменение было сделано в первую очередь.
  • Намного проще отменить или объединить изменения / исправления.
  • Это помогает лучше организовать вашу работу, поскольку вы четко сосредотачиваетесь на одной ошибке / функции / изменении, над которыми работаете. Вы делаете коммит, когда закончите.

Некоторые люди думают, что эта политика дает больше коммитов, но, судя по моему опыту, вы все же получаете меньше коммитов. Например, вы выполняете рефакторинг, который затрагивает 50 файлов. После рефакторинга у вас есть единственный коммит с сообщением «Рефакторинг подсистемы xyz.».

Для больших изменений вам следует рассмотреть политику dev-branch-per-change.

person Vilmantas Baranauskas    schedule 23.09.2008
comment
Это приводит к очень большому количеству коммитов, не так ли? Можете ли вы назвать систему контроля исходного кода, которая поддерживает такую ​​политику. Все известные мне системы поддерживают фиксацию только для каждого файла. - person boutta; 23.09.2008
comment
Да, много коммитов. Если они подлинные (thedailywtf.com/Articles/Productivity-20.aspx ) это не проблема. @Vilmantas Baranauskas хочет убедиться, что он может отслеживать, для чего предназначены отдельные коммиты. Это компромисс. - person Hamish Smith; 23.09.2008
comment
Subversion поддерживает это. Например. вы работаете над ошибкой №123. Чтобы исправить эту ошибку, вам нужно изменить 10 файлов. Когда вы закончите, в корне исходного дерева вы делаете коммит: svn commit -m Исправлена ​​ошибка № 123 .. Модификация 10 файлов совершается как одна фиксация с одним сообщением. - person Vilmantas Baranauskas; 23.09.2008
comment
Я вижу, это не решает проблемы. Допустим, вы работаете над ошибкой №1 и делаете что-то в файле X. Теперь вам нужно работать над ошибкой №2 без исправления ошибки №1. Вы завершили Ошибка №2. Как теперь можно фиксировать только изменения из-за ошибки №2? Или я неправильно понимаю концепцию или захожу слишком далеко? - person boutta; 25.09.2008
comment
Думаю, что параллельно работать над двумя исправлениями - плохая идея. Конечно, если ошибки №1 и №2 связаны, исправьте их обе и зафиксируйте Исправленные ошибки №1 и №2: ‹вставьте сюда что-то, что описывает обе ошибки›. - person Vilmantas Baranauskas; 30.09.2008