git-tf с отдельными репозиториями
Я являюсь частью организации, которая, к сожалению, использует TFS/TFVC для контроля версий. Моей маленькой команде было поручено выполнить своего рода "проверку концепции" с помощью git, но мы должны быть в состоянии перенести наши изменения в TFS. К счастью, существуют git-tf и git-tfs. Тем не менее, наш TFS-репозиторий является одним монолитным репозиторием с более чем 20 различными проектами / приложениями. Правильный способ сделать это в git - каждый проект должен иметь свой собственный репозиторий git. Я знаю, что могу проверить отдельный проект из TFS, используя мосты с git-tf, и если бы мы постоянно конвертировали в git, это то, что я бы сделал.
Что меня беспокоит, так это то, что если нам все еще нужно вернуться в TFVC, если я выберу каждый проект в качестве своего собственного репозитория git, не запутается ли TFVC, когда мы отодвигаем изменения назад, когда каждый проект изменяется независимо? То есть, если я извлекаю Проект A из набора изменений 123 и Проект B также из 123, внесу изменения в A, а затем перенесу их обратно в TFVC в качестве набора изменений 124, будет ли TFVC думать о конфликте слияния или о другой проблеме, когда мы позже внесем изменения в B и подтолкнуть их вверх, так как это все одно большое хранилище под TFVC.
Git-tf или git-tfs справляются с этим правильно? Или мне нужно просто проверить весь TFS-репозиторий как один git-репозиторий и работать с ним как есть? Или в этом случае, может быть, было бы лучше проверить различные проекты TFS в одной локальной рабочей области и использовать git для создания репозиториев без использования моста git-tf, а затем проверить изменения обратно в TFS, как если бы они были изменениями, внесенными в рабочая область напрямую (в основном игнорируя всю историю git и журналы коммитов и просто используя ее для локального отслеживания изменений)?
1 ответ
Да, вы можете создать несколько репозиториев Git для каждого командного проекта TFS. Это то же самое, что и в одном командном проекте для управления многими Git-репозиториями.
Более подробно вы можете взглянуть по этой ссылке: много Git-репозиториев, но один командный проект, чтобы управлять ими всеми
Если я извлечу Проект A из набора изменений 123 и Проект 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. Разница лишь в том, что один push-коммит, другой контроль изменений. Все три метода, которые вы упомянули выше, должны работать. Лучший из них использует git-tfs, который отслеживает всю историю.