Ограничения, которые следует учитывать при использовании 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 (мне просто нужно реорганизовать юнит-тест и функцию, которая будет рассмотрена).

[1] https://github.com/git-tfs/git-tfs/pull/363

Другие вопросы по тегам