Итак, «теги» для версий и «ветки» для новых функций? - PullRequest
4 голосов
/ 04 декабря 2010

Я немного новичок в распределенных системах контроля версий, поэтому я читал руководство по Mercurial, и я понял, что функция тегов может использоваться для маркировки номеров версий, например, тег v1.0 и другой v1. 1 и т. Д.

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

Это верно?

Пожалуйста, сообщите. Спасибо.

Ответы [ 5 ]

9 голосов
/ 05 декабря 2010

Звучит так, как будто вы в основном получаете ответы от пользователей git, которые также почти понимают Mercurial.

Основное отличие состоит в том, что в git имя ветви не является неотъемлемой частью набора изменений - оно простогде ревизия случается сейчас.В Mercurial имя Named Branch является частью его навсегда.Это заставляет людей, которые знают git больше, чем Mercurial, говорить одну из двух не совсем правильных вещей:

  • Именованные ветви должны использоваться для каждой функцииоснова - Нет ничего плохого в использовании именованной ветви для каждой функции в Mercurial, но так как эти имена ветвей никогда не исчезают, ваш вывод hg branches может вырасти довольно большим.
  • Ветвление в Mercurial isnне такой легкий, как в git - Named Branching в Mercurial не такой легкий (он постоянный), но поэтому он не является нормой для функций.Анонимное ветвление в Mercurial более легкое, чем названные git-ветки, а ветвление Bookmark в Mercurial точно такое же, как git-ветвление.

Все это прекрасно прописано в Руководстве по ветвлению Стива Лошав Mercurial , как первоначально ответил OJ (за что я проголосовал).

В итоге:

  • git
    • релизы: теги
    • особенности: ветви
    • линии разработки (стабильные и т. д.): отдельные репозитории
  • mercurial:
    • релизы: теги
    • функции: закладки или анонимные ветви
    • линии разработки (стабильные и т. д.): именованные ветви

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

5 голосов
3 голосов
/ 04 декабря 2010

Ну, это вопрос, который зависит от вашей точки зрения. В git ветви используются для многих целей (т. Е. Одна - разработка). На самом деле все в git - это branch . И в каждой ветке могут быть разные теги .

Я бы порекомендовал прочитать это руководство по gread, так как оно объясняет многое о ветках и выпусках:

http://nvie.com/posts/a-successful-git-branching-model/

2 голосов
/ 05 декабря 2010

Два ответа о git правильно согласны с вами, что теги хороши для релизов, а ветки хороши для новых функций, но на самом деле не объясняют почему.

Тег git постоянно указывает на данный коммит,Это означает, что он действительно только подходит для обозначения вехи, например, релиза.

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

Ситуация в Mercurial в основном похожа, хотя ветвление не так легкое, поэтому вы не будете переходить так часто, как вмерзавец.И теги обрабатываются немного по-другому, но все же хороши для маркировки релизов.

0 голосов
/ 04 декабря 2010

Я не являюсь пользователем Mercurial (я использую Git), но что касается рабочего процесса Git, у вас его нет.Ветви используются, часто одним разработчиком, для работы над собственными исправлениями / функциями до слияния с основной веткой.

Тэги, как правило, используются в основной ветке для обозначения этапов, часто выпусков.Это позволяет вам легко вернуться в это состояние без необходимости использовать номера коммитов (которые в Git представляют собой длинные строки шестнадцатеричных цифр, не знаю, как работает Mercurial).

Гари

...