2011-12-19 1 views
14

저는 git-tfs을 사용하고 있고 git-tfs을 사용하여 두 개의 TFS 분기를 병합 할 수 있는지 궁금합니다. 두 개의 분기 $/MyCompany/Dev & $/MyCompany/Release-3.3이 있습니다. 릴리스 3.3은 Dev 분기에서 시작됩니다. 둘 다 git tfs를 사용하여 다른 git 리포지토리로 체크 아웃됩니다.git tfs로 두 개의 TFS 분기를 합치십시오

변경 사항을 Dev 분기에 다시 통합하고 싶습니다. git-tfs으로이 작업을 수행 할 수 있습니까? 아니면 TFS 도구를 사용하여 작업을 수행해야합니까?

+0

왜 git tfs가 필요합니까? –

+2

더 많은 충돌을 자동으로 해결할 것으로 보이므로 git merge 알고리즘을 사용하는 것을 선호합니다. – Ceilingfish

답변

6

이 작업을 수행하는 데있어 굉장한 방법이 있습니다. git tfs는 git config를 사용하여 TFS 영역에 대한 인식을 관리합니다. 특히 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 

당신은 default에 다른 이름으로 다시이 세 속성을 설정하여 다른 remote를 추가 할 수 있습니다. 예 :

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을 발급해야 할 수 있습니다.

그런 다음 문제가 있습니다 : 당신은 (branch 명령) TFS 지점을 관리 할 수 ​​있습니다, 자식-TFS 0.16 이후

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을 사용하여이 작업을 수행했습니다 (비슷한 방법이 있다고 생각합니다). 당신의 주요 문제는 당신이 두 repos를 가지고 있다고 생각합니다. 두 가지 원격 브랜치를 동일한 git repo에 추가하면 로컬 병합을 수행하고 로컬 커밋을 수행 한 다음 해당 커밋을 TFS에 푸시 할 수 있어야합니다.

HTH

10

그래서 당신은 이제 쉽게 할 수 있습니다 그리고

git tfs fetch -i feature_branch 

사용하여 커밋을 병합 기존 브랜치를 초기화하고 하나를 만들고 TFS 브랜치를 병합하십시오!

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

그리고 릴리스 0.19 이후, 당신은 자식이 TFS 가지의 병합하고 (rcheckin 포함) TFS에 체크 인 할 수 있으며이 병합 변경 집합으로 체크됩니다 https://github.com/git-tfs/git-tfs/blob/master/doc/commands/rcheckin.md#checkin-a-merge-changeset

(TFS로 인한) 유일한 제한은 모든 커밋이 TFS에서 병합을 수행하고 TFS에서 확인하기 전에 이미 체크 된 것이어야한다는 것입니다.

이제 2TFS 브랜치보다 더 쉽게 병합하고 체크 할 수 있습니다.

+0

2013 년 9 월 30 일 현재, 문서는'init-branch'가'branch --init'를 위해 더 이상 사용되지 않는다는 것을 나타냅니다. –

+0

@DavidGardiner 당신의 오른쪽이지만 2는 동등합니다 하나는 다른 하나의 래퍼입니다.) 명령은 0.20까지 제거되지 않습니다 (0.19는 여전히 해제되지 않습니다). – Philippe

+0

걱정하지 마라. 우리는 당신이 git-tfs 정보를 얻기에 좋은 소스라고 생각할 수 있다고 생각한다. :-) –