TFS ветвление, в чем преимущества - PullRequest
7 голосов
/ 02 июня 2011

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

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

Ответы [ 2 ]

33 голосов
/ 02 июня 2011

(ОБНОВЛЕНИЕ: TFS теперь поддерживает git для управления версиями, поэтому остальная часть этого ответа больше не применяется)

Я бы гуглил ветвь за функцию.

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

Преимущество состоит в том, что у вас есть четкая история того, что вы сделали для реализации чего-либо.Без веток у вас было бы много коммитов, смешанных с коммитами других функций.Если QA не передает определенную функцию, у вас есть работа, чтобы собрать другую сборку, используя только коммиты для других функций.Другой альтернативой является попытка исправить вашу функцию, чтобы QA прошел.Это может быть невозможно в пятницу днем.

Переключатели функций - это еще один способ пропустить работу, но это увеличивает сложность кода, и сами переключатели могут содержать ошибки.Это что-то очень утомительное, и вы увидите, как это стало «приемлемым» обходным путем.

Ветви также используются для отслеживания изменений в нескольких версиях выпусков.Продукты, которые потребляются несколькими клиентами, могут быть в ситуации, когда один набор клиентов использует 1.0 продукта, в то время как другие уже используют 2.0.Если вы поддерживаете оба варианта, вы должны отслеживать изменения каждого из них по назначенным им ветвям.Предыдущие пункты все еще относятся к разработке для этих отраслей.

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

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

Если вам нужно использовать TFS, я бы предложил использовать git-tfs, чтобы использовать преимущества трехсторонних слияний и многих других.другие преимущества.Некоторые из них включают в себя: rerere, ребазинг, отключенную модель, локальную историю, деление на части и многое другое.

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

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

Если у вас есть такая возможность, я бы настоятельно рекомендовал отойти от TFS для контроля источников из-за множества ограничений по сравнению с современными DVCS.

Вот хороший набор рекомендаций, которым необходимо следовать, если вы хотите эффективно управлять ветвлением / объединением:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

Надеюсь, это поможет.

4 голосов
/ 02 июня 2011

Есть много информации для чтения, но здесь есть руководство по ветвлению TFS, если оно вообще помогает - http://tfsbranchingguideiii.codeplex.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...