2016-09-28 10 views
1

불행히도 소스 제어를 위해 TFS/TFVC를 사용하는 조직의 일부입니다. 저의 소규모 팀은 git을 사용하여 일종의 "개념 증명"작업을 수행해야하지만 TFS에 변경 사항을 적용 할 수 있어야합니다. 다행히 git-tf와 git-tfs가 존재합니다. 그러나 TFS 저장소는 20 개 이상의 서로 다른 프로젝트/응용 프로그램이 포함 된 하나의 모 놀리 식 저장소입니다. git에서이 작업을 수행하는 적절한 방법은 각 프로젝트가 자체 git 저장소가되도록하는 것입니다. git-tf가있는 브릿지를 사용하여 TFS에서 개별 프로젝트를 체크 아웃 할 수 있다는 것을 알고 있으며, 만약 우리가 git으로 영구적으로 변환한다면, 내가 할 일이다.git-tf와 별도 리포지토리

내가 우려하는 것은 각각의 프로젝트를 자체 git 저장소로 체크 아웃하면 TFVC로 다시 되돌아 가야 할 때, 각 프로젝트가 독립적으로 변경 될 때 TFVC가 변경 사항을 다시 푸시 할 때 혼란 스러울 것인가? 즉, 123 번 프로젝트에서 A 프로젝트를 체크 아웃하고 123 번 프로젝트에서 A 프로젝트를 변경 한 다음 A를 변경 한 다음 변경 사항 124로 TFVC로 다시 보내면 나중에 변경 사항이있을 때 TFVC가 병합 충돌 또는 다른 문제가 있다고 생각합니다. TF로가는 모든 것을 하나의 큰 창고로 만들었 기 때문에 B를 밀어 올려라.

git-tf 또는 git-tfs가 올바르게 처리합니까? 또는 전체 TFS 저장소를 단일 git 저장소로 확인하고 그대로 작동시켜야합니까? 또는이 경우에는 다양한 TFS 프로젝트를 하나의 로컬 작업 공간으로 체크 아웃하고 git-tf 브릿지를 사용하지 않고 git을 사용하여 리포지토리를 생성하고 변경 사항을 TFS로 다시 확인하는 것이 더 좋을까요? 작업 영역을 직접적으로 (기본적으로 모든 git 히스토리와 커밋 로그를 무시하고 로컬 변경 추적에 사용).

+1

그게 바로해야합니다. 두 gt 저장소에서 파일이 변경된 경우에만 충돌이 발생합니다. 동일한 자식 저장소의 두 포크가 동일한 파일에 대한 변경 사항을 동일한 업스트림 원격으로 푸시하려고 할 때와 마찬가지입니다. – jessehouwing

답변

1

예, TFS 팀 프로젝트 당 여러 개의 Git 리포지토리를 만들 수 있습니다. 이것은 많은 Git 저장소를 관리하는 하나의 팀 프로젝트에서와 동일합니다. 그때, 123도 변경 집합 (123) 및 프로젝트 B에서 프로젝트 A를 확인해 A의 변경 한 경우 Many Git Repositories, but one Team Project to rule them all

:

enter image description here

자세한 정보는이 링크를 좀 걸릴 수 있습니다 그 변경 사항을 TFS에서 변경 세트 124 번으로 푸시하면 TFS에 저장소가 있으므로 나중에 B를 변경하고 밀어 올리면 TFS에서 병합 충돌 또는 다른 문제가 있다고 생각합니다.

jessehouwing이 주석 처리 한 것과 마찬가지로 TFS는 해당 파일과 코드 만 감지합니다. 두 git 저장소에서 파일이 변경된 경우에만 충돌이 발생합니다. changeset 123에있는 파일은 버전 a이고, changeset 124에서 git rep1의 버전 b로 편집됩니다. 그리고이 파일은 버전 A에서 repB를 체크 아웃합니다. git rep2에서 버전 b로 변경하지 않았다면. 변경 사항을 푸시하면 확실하게 충돌이 발생합니다.


업데이트

git-tfs TFS와 자식간에 양방향 다리입니다. git tfs checkintool 명령을 사용하여 tfs checkin 창을 통해 커밋하십시오. 결과는 하나의 GIT 팀 프로젝트에서 여러 git 저장소를 사용하는 것과 같습니다. 유일한 차이점은 변경 사항을 한 번만 확인하면됩니다. 위에서 언급 한 세 가지 방법 모두가 효과가 있어야합니다. 가장 좋은 방법은 모든 역사를 추적하는 git-tfs를 사용하는 것입니다.

+0

TFS와 TFVC 용어를 섞어서 내가 명확하지 않다는 질문을 통해 나에게 일어났다. 명확히하기 위해, 나는 주어진 프로젝트가 여러 git repos를 가질 수 있다는 것을 알았다. 그러나 우리의 경우 TFS의 소스 제어는 당분간 TFVC로 유지됩니다. 아이디어는 모 놀리 식 TFVC 프로젝트를 현지 팀을위한 여러 git repos로 분할 한 다음 git-tf/git-tfs를 사용하여 TFVC 소스 컨트롤로 다시 밀어 넣는 것입니다. 아마도 이것이 당신의 대답을 바꾸지는 못하지만 여전히 가능 합니다만, 나는 명확히하고 싶었습니다. – moneyt

+0

git-tfs는 TFS와 git 사이의 양방향 브릿지입니다. 'git tfs checkintool' 명령을 사용하여 tfs checkin 창을 커밋합니다. 결과는 같습니다. 위에서 언급 한 세 가지 방법 모두가 효과가 있어야합니다. 가장 좋은 방법은 모든 역사를 추적하는 git-tfs를 사용하는 것입니다. –

+0

우수 감사합니다. 도움에 감사드립니다. – moneyt