우리 팀의 일부 개발자가 분기 A에서 수행 한 변경 사항을 보류했다고 가정 해 보겠습니다. 그리고 저는 분기 B에서 작업하고 있습니다. 그의 변경 사항을 분기 B로 보류 해제 할 수 있습니까? (GUI 또는 명령 프롬프트 사용)
답변
비주얼 스튜디오 전동 공구는 이 작업을 수행 할 수 있도록해야한다.
C:\src\2\Merlin\Main>tfpt unshelve /?
tfpt unshelve - Unshelve into workspace with pending changes
Allows a shelveset to be unshelved into a workspace with pending changes.
Merges content between local and shelved changes. Allows migration of shelved
changes from one branch into another by rewriting server paths.
Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup]
[/migrate /source:serverpath /target:serverpath]
shelvesetname The name of the shelveset to unshelve
/nobackup Skip the creation of a backup shelveset
/migrate Rewrite the server paths of the shelved items
(for example to unshelve into another branch)
/source:serverpath Source location for path rewrite (supply with /migrate)
/target:serverpath Target location for path rewrite (supply with /migrate)
/nobackup Skip the creation of a backup shelveset
예를 들어 Branch1에서 생성 된 “Shelve Set Name”이라는 shelve 세트를 Branch2에 병합하려면 다음을 사용합니다.
>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
답변
각 파일을 수동으로 병합 할 필요가없는 tfpt의 대체 솔루션
tfs 전동 도구의 문제 는 ‘근거없는 병합’을 수행하고 있으므로 모든 파일을 확인해야한다는 것 입니다. 800 개가 넘는 파일로 구성된 쉘프 셋을 가지고 있었고 ‘자동 병합’버튼을 믿지 않았고 각 파일을 차례로 살펴보고 싶지 않았기 때문에 다른 방법을 찾아야했습니다!
- TFS Shelveset Sidekick을 다운로드하여 설치합니다 .
- 도구는 VS2010의 ‘도구’아래에 나타납니다.
- ‘Shelveset Sidekick’도구를 실행하고 검색을 클릭하여 선반 세트를 표시합니다.
- 선반 세트를 마우스 오른쪽 버튼으로 클릭하고 ‘Shelveset 내보내기’를 선택하십시오.
- 다음과 같은 빈 위치에 저장
C:\temp\shelveset-name
- 이제 새 파일 만 포함하는 완전한 디렉토리 구조가 있습니다.
(참고 : 내보낼 때 진행률 표시 줄이 없습니다. 따라서 내보내는 데 시간이 오래 걸리는 큰 선반 세트가있는 경우 Windows 탐색기 (파일> 속성> 크기)에서 파일이 여전히 다운되고 있는지 확인해야합니다. 얼 었다고 생각하십시오).
이제 Windows 탐색기를 사용하여 새 분기로 복사하기 만하면됩니다.
이것은 나를 위해 일했습니다.
- 먼저 전체 솔루션 확인 (새 브랜치에서)
- 해당 솔루션 닫기
- VS 내에서 TFS를 오프라인으로 전환 ( 이 작업을 수행하는 도구 )- 이것이 중요한 이유는 아래를 참조하십시오.
- Windows 탐색기에서 파일을 복사합니다. 의 디렉토리 구조
c:\temp\shelveset-name
는 새 분기에 해당하도록 이름을 변경해야합니다.팁 : 올바른 위치에 복사하십시오 !!! - VS를 온라인 상태로 만들기
- 모든 변경 사항을 찾고 새 파일을 추가해야합니다.
- 소스 제어를 바인딩하도록 요청하는 경우 새 분기에 대한 경로가 올바른지 확인하십시오.
- 테스트-새 파일 체크인
중요 : 먼저 TFS를 오프라인으로 전환하지 않으면 작은 빨간색 확인 표시없이 새 파일 (보관되지 않은 변경 집합의)이 표시되며이를 제외하고 다시 포함해야합니다. 추가 할 수 있습니다. 이 문제에 대한 대안이있는 사람이 있다면 알고 싶습니다. 새로 고침이 작동하지 않는 것 같습니다.
답변
선반 정보에는 이동하는 특정 경로가 포함됩니다. 불행히도 나는 그것이 선반이 있던 곳이 아닌 다른 위치로 선반을 해제하는 자동 방법을 모릅니다. 이 작업을 수행하고 싶을 때는 새 브랜치에서 동등한 파일을 확인하고 이전 브랜치에서 보류를 해제 한 다음 수동으로 파일을 복사해야했습니다.
편집 : 글쎄, 나는 그것을 열심히하고 있다고 생각합니다. Curt의 해결책을 시험 해봐야합니다. 🙂
답변
이 작업을 수행하는 데 많은 시간을 보냈고 극복해야 할 문제가 거의 없었습니다. 가능하지만 여기에서는 이러한 문제를 해결하기 위해 따라야 할 몇 가지 문제와 규칙이 거의 없습니다.
오류:
작업 공간을 결정할 수 없습니다
이 특정 문제는 소스 분기 루트 폴더 에서 명령을 실행하여 해결되었습니다 . 이것은 “target”branch를 사용하라고 말하는 SO에 대한 일부 답변과 상반됩니다-no, use “source”:
cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"
이 후 두 번째 호가 나왔습니다. TFS 서버에 연결할 수없는 것 같습니다. 내가 깨달은 것은 여러 VS가 설치되어 있고 다른 TFS 서버에 연결되어 있다는 것입니다. VS12를 사용하고 있었고 작업 공간과 서버 연결이있었습니다. 하지만 TFPT2013이 작동하려면 VS13에서 동일한 연결을 복제해야한다는 사실을 몰랐습니다. 동일한 서버 및 작업 공간에 연결됩니다.
나는 또한 TFPT2015를 사용하여 시도했지만 그것을 설치했고 TFPT.exe를 설치하지 않았으므로 쓸모가 없었습니다. 그래서 TFPT2013에서 TFS2015까지 시도했고이 특정 명령에서 작동했습니다. VS12 / 13이 TFS2015에 대해 잘 작동하는지 궁금합니다.
요약
- CMD 또는 DevCMD 사용-중요하지 않음
- 소스 분기 루트 폴더 에서 명령 실행
- 특정 VS에 대한 팀 탐색기 서버 연결 확인
- TF Power Tools 2013은 TFS v15에서 작동 하며 최소한 마이그레이션 옵션은 작동합니다.
답변
다음 단계는 작은 크기의 선반 세트 (~ 20 개 이하의 파일)에 사용할 수 있습니다.
- 선반 세트 및 대상 분기에서 보류중인 모든 업데이트를 체크인하거나 롤백하는 것으로 시작합니다.
- 선반 세트 분기에서 해당 선반 세트의 파일을 선반 해제합니다.
- 대상 브랜치에서 보관되지 않은 선반 세트에 있던 기존 파일을 체크 아웃합니다.
- 선반 집합 분기의 보관되지 않은 파일을 대상 분기의 파일과 비교하여 병합 업데이트가 필요한 파일 (있는 경우)을 식별합니다.
- 필요한 경우 이전 단계의 해당 파일에 대한 병합 업데이트를 수동으로 수행하고 이러한 파일을 대상 분기 작업 공간에 저장합니다.
- 다른 선반 세트 파일을 선반 세트 분기 작업 공간에서 대상 분기 작업 공간으로 복사합니다.
- 대상 분기 작업 공간의 새로 업데이트 된 파일을 체크인 된 파일과 비교하십시오. 필요에 따라 수정하십시오.
- 대상 분기에서 새로 업데이트 된 파일을 체크인하십시오.
- 선반 세트 분기에서 보관되지 않은 파일을 롤백합니다.