Ограничения, которые следует учитывать при использовании git с TFS через git-tf или git-tfs?
Что я на самом деле упущу, если основываю свою обработку исходного кода на TFS (чтобы получить всю интеграцию, отчетность и т. Д.), Но использую git-tf или git-tfs локально?
Смогу ли я тогда использовать весь git функционально для ветвления и локального слияния так же, как если бы использовал центральный репозиторий на основе git, или будет другой рабочий процесс и ограничения, которые следует учитывать?
Мы часто используем ветки разработки функций и релизов, и нам нравится продолжать это делать. Как на самом деле TFS-сервер справляется с этим, когда отправляет их локально, используя git-tf и т. Д.?
2 ответа
Если вы сначала используете git-tf (версия MS), вы должны понимать, что команды, которые вы используете, будут отличаться - они вставляют дополнительный "tf" в каждую команду. (например git tf push
)
Во-вторых, ветвление не будет работать как git - я обнаружил (и это может быть связано с настройками безопасности и т. Д., Хотя я могу создавать ветки локально и на сервере), что, хотя вы можете ветвить локальную настройку git, вы не можете нажать новая ветвь обратно на сервер - сначала нужно объединить ее с "официальной" веткой.
Если бы вы использовали TFS, я бы не стал пытаться использовать любой из мостов (хотя мост svn-tfs очень близок из-за природы TFS, близкой к SVN). Я бы использовал родной клиент. Я бы не стал сначала выбирать TFS, но если бы это было то, что я должен был использовать - клиент Team Explorer Everywhere был бы моим выбором.
На самом деле, git-tfs более продвинут, чем git-tf. Я настоятельно советую использовать его вместо git-tf (на данный момент).
С помощью git-tf вы должны клонировать каждую ветку как репозиторий (и не иметь возможности выбирать, объединять...), в то время как в последней версии git-tf вы можете это делать и поддерживать рабочий процесс. См. /questions/13617435/kak-mne-ispolzovat-git-tfs-i-idiomaticheskoe-git-vetvlenie-dlya-tfs-repozitoriya/13617454#13617454
Если вы знаете git, нет проблем с использованием git-tfs!
Документация: https://github.com/git-tfs/git-tfs/blob/master/doc/
просто знайте, что если вы используете:
git tfs checkintool
или же:
git tfs checkin
это создаст коммит слияния
и если вы используете:
git tfs rcheckin
он будет фиксировать каждый локальный коммит в tfs, извлекать и автоматически перезагружать эти коммиты...
Но почитайте вики документацию, это достаточно понятно;)
edit: Вопреки тому, что сказал @gbjbaanb, есть много преимуществ использования git-tfs вместо простого TFS (если вы знаете, как использовать git...). ВСЕ, что вы можете сделать с помощью git локально, работает и по-прежнему является преимуществом (легкое ветвление, перебазирование, локальные коммиты, повторная обработка коммитов, точное знание, какая версия проверена, выборка и просмотр изменений БЕЗ слияния их с вашим текущим рабочим пространством, улучшенной историей,...).
Теперь, используя git-tfs, вы могли бы даже легче создать ветку TFS, чем TFS (вам просто нужно создать ее перед выполнением коммита в ней, или переназначить ее после создания, если вы начали свою работу в ветке git раньше....)
Единственное, что на данный момент не лучше TFS, - это объединение 2 веток TFS, которые не поддерживаются. Вам следует либо выполнить слияние с TFS, если вы хотите увидеть слияние в своей истории (что мы обычно хотим), либо слить с помощью git и checkin в tfs (и вы не увидите набор изменений слияния:(). Запрос на извлечение [1], чтобы решить все это (и разрешить управлять коммитом слияния LOT проще, чем с TFS), уже выполненным и ожидающим слияния в trunc (мне просто нужно реорганизовать юнит-тест и функцию, которая будет рассмотрена).