2011-12-19 3 views
14

Я использую git-tfs, и мне было интересно, можно ли объединить две ветви TFS, используя git-tfs. У меня две ветви $/MyCompany/Dev & $/MyCompany/Release-3.3. Релиз-3.3 происходит от ветви Dev. Оба проверяются как разные репозитории git с использованием git tfs.Объединить две ветви TFS с git tfs

Я хотел бы снова включить изменения в ветку Dev. Может ли это быть достигнуто с git-tfs или мне придется прибегнуть к попытке сделать это с помощью инструментов TFS?

+0

Почему с git tfs? –

+2

Я бы предпочел использовать алгоритм слияния git, поскольку он, кажется, автоматически разрешает больше конфликтов. – Ceilingfish

ответ

6

Я нашел удивительный, если Hacky способ сделать это. Git tfs управляет осознанием областей TFS с помощью git config. В частности, 3 атрибута на remote; URL, хранилище и выборки, например:

tfs-remote.default.url=http://tfsserver:8080/tfs/collection 
tfs-remote.default.repository=$/Product/Branch/Component 
tfs-remote.default.fetch=refs/remotes/default/master 

Вы можете добавить еще remote, установив эти 3 свойства снова с другим именем default. Например:

tfs-remote.feature_branch.url=http://tfsserver:8080/tfs/collection 
tfs-remote.feature_branch.repository=$/Product/FeatureBranch/Component 
tfs-remote.feature_branch.fetch=refs/remotes/default/feature_branch 

Возможно, вам необходимо будет выслать git tfs bootstrap.

Вы можете вопрос:

git tfs fetch -i feature_branch 

Затем слить коммитов с помощью:

git merge tfs/feature_branch 
+1

Это действительно создает ожидающее изменения слияния в TFS? Если нет, вы как бы шунтируете следующего человека, который хочет выполнить слияние с клиентом TFS, потому что TFS не будет записывать слияние как выполненное. Таким образом, он попытается снова объединить эти изменения. (По общему признанию, конфликты будут довольно тривиальными, но это все равно может раздражать.) –

+0

Вы совершенно правы, этот механизм может вызвать проблемы, если было несколько слияний пользователей. Возможно, я нашел лучшее решение: http://stackoverflow.com/a/7334268/58991 – Ceilingfish

+0

Кто-нибудь знает, позволяет ли git-tf (не git-tfs) такое слияние? Выполняется ли проверка как слияние или как новый код? –

-1

Я не пользователь git-tfs, но я сделал это с git-svn в прошлом (что, по-моему, похоже на аналогичный подход). Я думаю, что ваша главная проблема в том, что у вас есть два репозитория. Если вы добавите обе отдаленные ветви к одному и тому же репозиторию git, вы должны затем выполнить локальное слияние, выполнить локальное коммитирование, а затем нажать эту фиксацию на TFS.

НТН

10

С мерзавец-ТПО 0,16, вы можете управлять TFS ветви (с branch команды), так что теперь вы можете легко инициализировать существующую ветвь, создать одну и объединить ветки TFS!

https://github.com/git-tfs/git-tfs/blob/master/doc/commands/branch.md#initialize-an-existing-tfs-branch

И с моментом выхода 0.19, вы можете сделать GIT слияние 2 филиала TFS и приезд его в TFS (с rcheckin) и будет проверяться в качестве объединения ревизии: https://github.com/git-tfs/git-tfs/blob/master/doc/commands/rcheckin.md#checkin-a-merge-changeset

Единственное ограничение (из-за TFS) заключается в том, что все коммиты должны были быть уже проверены в TFS, прежде чем выполнять слияние с git и проверить его в TFS.

Итак, теперь вы можете объединить более легко, чем с ветвями 2TFS, и проверить их в ...

+0

Обратите внимание, что по состоянию на 30 сентября 2013 года документация указывает, что 'init-branch' устарел в пользу' branch -init' –

+0

@DavidGardiner ваше право, но 2 эквивалентны (один - оболочка для другого), и команда не будет удалена до 0,20 (и 0,19 все еще не будет выпущена). – Philippe

+0

Не беспокойтесь. Думаю, мы можем предположить, что вы хороший источник информации о git-tfs :-) –

Смежные вопросы