TFS ветвление, в чем преимущества

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

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

2 ответа

Решение

(ОБНОВЛЕНИЕ: 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/

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

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

Другие вопросы по тегам