2016-09-28 7 views
1

Я часть организации, которая, к сожалению, использует TFS/TFVC для управления версиями. Моей маленькой команде было поручено сделать своеобразное «доказательство концепции», запущенное с git, но мы должны иметь возможность продвигать наши изменения в TFS. К счастью, существуют git-tf и git-tfs. Однако наш репозиторий TFS представляет собой одно монолитный репозиторий с 20+ различными проектами/приложениями. Правильный способ сделать это в git будет для каждого проекта как своего собственного репозитория git. Я знаю, что я могу проверить индивидуальный проект из TFS, используя мосты с git-tf, и если бы мы постоянно переходили на git, я бы это сделал.git-tf с отдельными репозиториями

Что меня беспокоит, если нам все еще нужно вернуться в TFVC, если я проверю каждый проект как свой собственный репозиторий git, будет ли TFVC запутываться, когда мы будем откладывать изменения, поскольку каждый проект изменяется независимо? То есть, если я проверю Project A из набора изменений 123 и Project B также из 123, внесите изменения в A, а затем верните их обратно в TFVC в качестве набора изменений 124, TFVC подумает, что есть конфликт слияния или другая проблема, когда мы позже вносим изменения к B и подтолкнуть их, поскольку это всего один большой репозиторий под TFVC.

Выполняет ли git-tf или git-tfs это правильно? Или мне нужно просто проверить весь репозиторий TFS как единственный репозиторий git и работать с ним как есть? Или в этом случае было бы лучше проверить различные проекты TFS в одном локальном рабочем пространстве и использовать git для создания репозиториев, не используя мост git-tf, и проверить изменения в TFS, как если бы они были изменениями, сделанными в (в основном игнорируя все истории git и журналы фиксации и просто используя его для локального отслеживания изменений)?

+1

Это должно быть просто вов. У вас появятся конфликты, когда файлы были изменены в обоих репозиториях. Как и вы, когда две вилки одного и того же репозитория git попытаются вносить изменения в один и тот же файл в один и тот же удаленный пульт. – jessehouwing

ответ

1

Да, вы можете создать несколько репозиториев Git в проекте Team TFS. Это то же самое, что и в одном Team Project, чтобы управлять многими репозиториями Git.

enter image description here

Подробнее вы можете посмотреть по этой ссылке можно: Many Git Repositories, but one Team Project to rule them all

Если я проверяю Project A из ревизии 123 и проект B также из 123, вносить изменения в A, а затем перетащите их обратно в TFS в качестве набора изменений 124, будет ли TFS думать, что есть конфликт слияния или другая проблема, когда мы с позже вносим изменения в B и подталкиваем их, поскольку это все один большой репозиторий на TFS.

TFS будет обнаруживать только соответствующие файлы и коды, точно так же, как комментирует jessehouwing. вы получите только конфликты, когда файлы были изменены в обоих хранилищах git. Например, файл в наборе изменений 123 имеет версию a и редактируется в наборе изменений 124 с версией b из git rep1. И этот файл также проверяет с версией a для repB. Если вы не изменили его на версию b в git rep2. Когда вы нажимаете изменения, вы обязательно получите конфликт.


Обновление

git-tfs это двусторонний мост между TFS и мерзавцем. Например, используя команду git tfs checkintool для фиксации через окно проверки tfs. Таким образом, результат будет таким же, как использование нескольких репозиториев git в одном проекте команды GIT. Единственное различие заключается в том, что происходит одно нажатие, другая проверка изменений. Все три метода, о которых вы упомянули выше, должны работать. Лучше всего использовать git-tfs, который будет отслеживать всю историю.

+0

Мне пришло в голову, что я не понял (смешивая условия TFS и TFVC). Чтобы уточнить, я знал, что данный проект может иметь несколько репозиторий git. Однако в нашем случае контроль источника в TFS останется TFVC. Идея состоит в том, чтобы сегментировать монолитный проект TFVC для нескольких репозиториев git для местной команды, а затем вернуться обратно в источник управления TFVC с помощью git-tf/git-tfs. Возможно, это не изменит ваш ответ, и это все еще возможно, но я хотел уточнить. – moneyt

+0

git-tfs - это двухсторонний мост между TFS и git. Например, используя команду 'git tfs checkintool' для фиксации через окно проверки tfs. Таким образом, результат тот же. Все три метода, о которых вы упомянули выше, должны работать. Лучше всего использовать git-tfs, который будет отслеживать всю историю. –

+0

Отлично, спасибо за помощь – moneyt