Прямая и обратная интеграция из одного решения в другое в TFS
Я только что перенес свой код из Perforce в TFS. Все выглядит хорошо, но есть проблема, которая заключается в прямой и обратной интеграции одного решения в другое. Это шоу-стоппер для меня.
Существует два разных решения и два проекта являются общими в обоих решениях, но имеют разные копии по отдельности. Таким образом, прямая интеграция будет объединять все приложение от sol1 до sol2 для разрешения конфликтов в общих проектах. После того, как это будет решено, объедините код с решением 1 (обратная интеграция). Следует понимать, что необходимо объединить только общие проекты, а все остальное можно исключить.
Можно ли выполнить аналогичную настройку в TFS?
2 ответа
Я получил точное решение, которое является более или менее первым вариантом Джесси, который вы предоставили. По сути, нам нужно создать общие проекты для одного из решений, а затем добавить их в другое решение. Позднее мы можем объединить их из решения 1 и 2, проверить объединенные файлы в решении 2, а затем объединить из решения 2 в 1 и проверить объединенные файлы в решении 1.
Да, этот сценарий возможен в TFVC, но не очень распространен. У вас есть несколько вариантов:
Создайте корневую ветвь на уровне решения и объедините файлы из решения один в решение два. В рамках операции объединения исключите файлы, которые вы не хотите объединять. Позже вы можете объединяться вперед и назад на уровне папок.
Создайте взаимосвязь папок, но не превращайте папки в корни ветвей. Это позволяет объединять одну папку с другой в любое время, но не показывает эти папки как ветви как таковые.
Создайте корень ветви на каждом уровне проекта и объедините каждый проект отдельно. Это имеет несколько недостатков (поскольку в этом случае вы не можете разветвлять все решение, поскольку корни ветвления не могут быть вложенными).
Или вы можете подойти к проблеме по-другому:
Создайте отдельное решение, содержащее общий код, и используйте управление пакетами ( публикация пакетов NuGet), чтобы разделить зависимости между обоими решениями (по сути, создавая 3 решения).
Используйте сопоставления рабочей области, чтобы хранить общий код в одном месте в системе управления версиями и отображать код в разные места на диске. Вы можете использовать директивы компилятора или конфигурацию или различные абстракции (интерфейсы, абстрактные классы) в коде для компиляции исходных кодов в разные версии.