Слияние и ветвление общего кода между проектами в TFS

В настоящее время я отвечаю за перенос наших приложений asp.net из исходного кода в TFS. У нас есть три или четыре очень похожих приложения (скажем, электронная коммерция), которые в настоящее время совместно используют основную библиотеку (сервисы, бизнес-логика, объекты, доступ к данным и т. Д.).

Приложения похожи, но не идентичны, поэтому одно приложение может получить набор функций, а другие - нет.

Я хочу прекратить совместное использование кода и вместо этого настроить ветви (если это подходит), поэтому, если я что-то изменю в основной библиотеке Приложения A, мне нужно будет объединить изменения с другими ветками, а не получать их автоматически. Это позволяет избежать неожиданностей, когда вы обновляете из своей ствола, и вдруг ядро ​​изменилось для другого проекта, и этот проект каким-то образом ломается.

Есть предложения о том, как мне это настроить в TFS? Должен ли я иметь «основное» ядро, которое напрямую не используется ни в одном проекте, являющемся родителем всех других ядер, чтобы я мог перенести изменения в это ядро ​​из одного ядра и затем распределить его по другим ядрам? Имеет ли это смысл и будет ли легко настроить TFS?

7 голосов | спросил chcl 15 Maypm09 2009, 12:49:14

4 ответа


0

В ответ на ваш комментарий я предлагаю вам прочитать Feature branches на сайт CodePlex .

  

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

     

Мой командный проект

      Development -> Isolated development branch container  
        Feature A -> Feature branch  
           Source  
        Feature B -> Feature branch  
          Source  
        Feature C -> Feature branch  
          Source  
        Main      -> Main Integration branch
          Source

Мы также переходим от SS к TFS в ближайшее время.

Как я понимаю, мы будем держать наш репозиторий SS в сети и начать все сначала в TFS. Наш каркас , вероятно, получит свой собственный проект в TFS. Специфичные для проекта общие блоки будут время от времени объединяться.


То, как вы структурируете свой репозиторий, зависит от вашей конкретной ситуации. У каждого сценария ветвления есть свои преимущества и недостатки.

  • Сколько проектов
  • Сколько разработчиков
  • Преданы ли разработчики
  • Нужны ли вам одновременные исправления
  • Нужны ли вам пакеты обновлений

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

  

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

ответил Lieven Keersmaekers 15 Maypm09 2009, 13:29:56
0

Я предполагаю, что вы уже исследовали, действительно ли вам нужно делать «копии» отдельных командных проектов. Помните, что концепция TFS «командного проекта» - это ОЧЕНЬ БОЛЬШОЙ контейнер высокого уровня. Это не то же самое, что большинство IT-магазинов считают «Проектом». Думайте о «Microsoft Vista» или «Office 2007» как о проекте, а не о «новом выпуске системы дебиторской задолженности компании XYZ» как о проекте в смысле командного проекта.

У меня есть клиент, который выбрал один командный проект для TFS. В этом нет ничего плохого - и это действительно лучший сценарий во многих обстоятельствах.

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

Тем не менее - вы все еще - поскольку вы заявили, что должны обмениваться кодом между экземплярами вашего приложения. Первое, что я бы настоятельно рекомендовал, это уйти от обмена «Вырезать и вставить». Я действительно попытался бы выделить общий код в отдельное решение и сгенерировать двоичные файлы для этого (возможно, вы уже сделали это!)

Это описано в Codeplex TFS: http://tfsguide.codeplex.com/

Другой подход, который я сделал для нескольких клиентов, - это создать командный проект, содержащий общий код. «Build» создает двоичные файлы для общего кода, а «Deploy» просто копирует их в «известное место» (т. Е. Общий ресурс UNC на компьютере сборки)

Для приложений, которые являются «потребителями» «Framework», мы просто использовали группу «AdditionalReferencesPath», чтобы включить местоположение этого известного местоположения.

Кроме того, этот инструмент: http://tfsdepreplicator.codeplex.com/ может быть полезен. Это позволит вам автоматически запускать сборки для ваших «потребительских» проектов при создании решения «Framework».

ответил fuzzbone 18 Maypm09 2009, 20:53:45
0

Мой краткий ответ заключается в том, что вы должны настроить только один «проект TFS» и просто упорядочить свои различные проекты, то есть ваши отдельные приложения и каждую общую библиотеку, в виде отдельных папок в этом одном проекте TFS. Альтернативой является включение определенных (двоичных) сборок общих библиотек в каждое отдельное приложение - если вы сделаете это, вы можете организовать каждое приложение в свой собственный проект TFS, тем самым вы не сможете объединить изменения или разветвить эти проекты без использования TFS командная строка (и некоторые неочевидные команды для загрузки).

ответил Kenny Evitt 21 J0000006Europe/Moscow 2012, 18:22:33
0

Я пытался определить ту же информацию, это руководство по codeplex идеально подходит

http://vsarbranchingguide.codeplex.com/releases

Включает терминологию и различные подходы к ветвлению, а также шпаргалки.

ответил artfulhacker 9 PMpTue, 09 Apr 2013 22:14:43 +040014Tuesday 2013, 22:14:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132