2017-03-22 6 views
1

다른 여러 프로젝트에서 공유 라이브러리/공통 코드로 공유해야하는 git 저장소가 있습니다. 이 공통 코드를 사용하는 프로젝트는 모두 TFS 프로젝트입니다 (TFS2013). TFS에서 git repo를 호스팅 할 수는 있지만 중복되지 않고 git와 TFS repos를 함께 연결하는 방법을 알 수 없습니다.git 저장소를 여러 TFS 프로젝트에 연결

내가 달성하기 위해 노력하고 아이디어는 하나 개의 자식의 repo는 N 다른 자식의 repos에 서브 모듈이 될 수 자식의 서브 모듈, 동일 :

- CommonLib/ (git) 
    - src/ 
    - inc/ 
- Project1/ (git) 
    - src/ 
    - inc/ 
    - lib/ 
     -CommonLib (git submodule) 
- Project2/ (git) 
    - src/ 
    - inc/ 
    - lib/ 
     -CommonLib (git submodule) 

하지만이 프로젝트 TFS 때이 작업을 수행하고 싶습니다 리포 지 토리 :

- CommonLib/ (git) 
    - src/ 
    - inc/ 
- Project1/ (TFS) 
    - src/ 
    - inc/ 
    - lib/ 
     -CommonLib (?? How to link ??) 
- Project2/ (TFS) 
    - src/ 
    - inc/ 
    - lib/ 
     -CommonLib (?? How to link ??) 

이게 가능합니까?

내가 한 가지 해결책은 프로젝트의 각 lib/디렉토리에 CommonLib repo를 복제하고 업스트림 원격을 적절히 설정하는 것입니다. 그러나 그때 나는 GFS Repo를 TFS repo에 체크인해야하는데 이것은 나에게 잘못된 것처럼 보인다.

Project2 내에서 CommonLib에서 소스를 변경 한 개발자가 TFS에 체크인 할 때 자동으로 git repo에 대한 변경 사항을 확인할 수 있기를 바랍니다. git submodule을 사용하는 방법과 비슷하게, 프로젝트 변경 사항 (부모)과 하위 모듈 (자식)이 부모로부터 하나의 git commit으로 변경 될 수 있습니다.

+0

그런 식으로하려고하는 대신 2 개의 프로젝트에서 사용할 너겟 패키지를 직접 만드십시오. – Philippe

답변

0

당신을 위해이 작업을 수행 할 수있는 도구가 없습니다.이 방법을 권장하지 않으며 그 이유를 알려 드리겠습니다.

다른 .SLN 파일을 사용하여 여러 인스턴스를 열지 않으면 Visual Studio가 도움이되지 않으며 코드를 수동으로 터치하고 작업을 수행하는 것은 개발자의 몫입니다. git & tf 시퀀스를 호출하여 두 버전 제어 시스템에서 어떻게 든 작동을 동기화하는 사용자 고유의 명령 줄 도구를 만들 수 있습니다. git에서 커밋 sha를 선택하고 TFVC 주석에 추가 할 수 있습니다. 어떤 경우에는 git 커밋이 TFS 변경 집합에 필요하다는 것을 결정하는 것이 매우 어려울 것입니다.

모든 코드를 두 버전 제어 시스템 중 하나로 이동하는 것이 좋습니다.

0

예, 가능합니다. TFS IDE (visual studio)가 git submodule을 잘 보여주지 못하기 때문에 git 명령 줄 (예 : git bash)으로 TFS git repo에 대한 서브 모듈을 추가 할 수 있지만 near future으로 향상됩니다. CommonLib가 업데이트되면

git clone http://account:8080/tfs/DefaultCollection/_git/Project1 
cd Project1 
git submodule add http://account:8080/tfs/DefaultCollection/_git/CommonLib 
git push 

을 당신은 git submodule update --remote에 의해 Project1의에서 서브 모듈을 업데이트 할 수 있습니다

명령은 다음과 같습니다 (Project2에 유사한) TFS 자식의 repo에서 Project1에 대한 서브 모듈을 추가 할 수 있습니다.

하위 모듈의 파일은 로컬 저장소에서 볼 수 있습니다. 하위 모듈의 최신 커밋 ID는 TFS git repo에서만 찾을 수 있습니다.

+0

Project1 repo가 ​​예제에서 .git repo 인 것처럼 보입니다. – Moop

+0

TFS 프로젝트가 git에 의해 제어되는 상황에 적합 할 수도 있습니다. –