git-tf с отдельными репозиториями

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

Что меня беспокоит, так это то, что нам все еще нужно вернуться к 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 и журналы фиксации и просто используя его для отслеживания локальных изменений)?


person moneyt    schedule 28.09.2016    source источник
comment
Это должно просто встать. Конфликты возникают только тогда, когда файлы были изменены в обоих репозиториях gt. Точно так же, как если бы две вилки одного и того же репозитория git пытались отправить изменения в один и тот же файл на один и тот же удаленный пульт.   -  person jessehouwing    schedule 28.09.2016


Ответы (1)


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

введите здесь описание изображения

Более подробную информацию вы можете посмотреть по этой ссылке: Множество репозиториев Git, но один командный проект для управления ими всеми

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

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


Обновлять

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

person PatrickLu-MSFT    schedule 29.09.2016
comment
Мне пришло в голову, возвращаясь к моему запросу, что я не совсем ясен (смешивание терминов TFS и TFVC). Чтобы уточнить, я знал, что у данного проекта может быть несколько репозиториев git. Однако в нашем случае исходный контроль в TFS пока что останется TFVC. Идея состоит в том, чтобы сегментировать монолитный проект TFVC на несколько репозиториев git для местной команды, а затем вернуть его в систему управления версиями TFVC с помощью git-tf / git-tfs. Возможно, это не меняет вашего ответа, и это все еще возможно, но я хотел уточнить. - person moneyt; 29.09.2016
comment
git-tfs - это двусторонний мост между TFS и git. Например, использование команды git tfs checkintool для фиксации через окно проверки tfs. Так что результат тот же. Все три метода, о которых вы упомянули выше, должны работать. Лучше всего использовать git-tfs, который будет отслеживать всю историю. - person PatrickLu-MSFT; 29.09.2016