tfs 2008에서 다른 지점으로 보류를 해제 할 수 있습니까?


105

우리 팀의 일부 개발자가 분기 A에서 수행 한 변경 사항을 보류했다고 가정 해 보겠습니다. 그리고 저는 분기 B에서 작업하고 있습니다. 그의 변경 사항을 분기 B로 보류 해제 할 수 있습니까? (GUI 또는 명령 프롬프트 사용)


위 명령의 데모 : Unshelve 명령 기본 사항
Rohit

답변:


129

비주얼 스튜디오 전동 공구는 이 작업을 수행 할 수 있도록해야한다.

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/"

2
Ooohhh ... Curt, 당신이 내 하루를 방금 만든 것 같아요. 나는 나중에 그것을 시도해야 할 것입니다.
Herms

전동 공구는 어디서 구합니까?
Guy Guy

3
네, 전동 공구를 사용하면이 작업을 수행 할 수 있지만 안타깝게도 병합은 매번 끔찍하게 잘못되어 쓸모 없게됩니다.
Tim Booker

병합은 그렇게 나쁘지 않습니다. 자동 병합이 90 %의 경우에서 작동하는 것으로 나타났습니다.
Justin Rudd

2
방금 시도했습니다. 나는 선반 세트 내에서 많은 파일을 옮겼지만 불행히도 이것은 잘 작동하지 않는 것 같습니다. 이러한 모든 파일을 수동으로 "마이그레이션"해야합니다 (다중 선택도 없음). 그런 다음 작업 공간에 새 파일로 추가됩니다. 더 이상 병합 할 수 없기 때문에 사용할 수 없습니다.
Stefan Steinegger

34

각 파일을 수동으로 병합 할 필요가없는 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를 오프라인으로 전환하지 않으면 작은 빨간색 확인 표시없이 새 파일 (보관되지 않은 변경 집합의)이 표시되며이를 제외하고 다시 포함해야합니다. 추가 할 수 있습니다. 이 문제에 대한 대안이있는 사람이 있다면 알고 싶습니다. 새로 고침이 작동하지 않는 것 같습니다.


이 방법은 더 큰 선반 세트에 더 쉽고 내가 따랐던 방법입니다. 감사!
Ani

이 방법은 더 큰 shelvesets 정말 좋다
아미르

TFS를 오프라인으로 전환하지 않고도 벗어날 수 있습니다. 하지만 그만한 가치가 있는지 모르겠습니다. 내가 한 것은 소스 제어 탐색기에서 관련 폴더의 컨텍스트 메뉴를 열어 비교 작업을 실행하는 것입니다. 다른 항목 만 표시하도록 출력을 필터링 할 수 있습니다. 그런 다음 여러 항목을 선택하고 한 번에 모두 체크 아웃 할 수 있습니다. 하지만 TFS를 오프라인으로 전환하는 것이 그보다 빠르고 간단하다고 생각합니다.
마크

안타깝게도 선반 세트에 변경 사항을 "추가"한 경우이 기능이 작동하지 않습니다. "보류 된 파일을 검색하지 못했습니다. 보류 된 보류중인 파일 변경이 필요합니다."라는 오류 메시지가 나타납니다.
John Saunders

와 @JohnSaunders 당신은 보류 집합을 의미 하나가 추가 독점적으로 추가하거나? 나는 몇 년 동안 이것을 할 필요가 없었습니다 :)
Simon_Weaver

1

선반 정보에는 이동하는 특정 경로가 포함됩니다. 불행히도 나는 그것이 선반이 있던 곳이 아닌 다른 위치로 선반을 해제하는 자동 방법을 모릅니다. 이 작업을 수행하고 싶을 때는 새 브랜치에서 동등한 파일을 확인하고 이전 브랜치에서 보류를 해제 한 다음 수동으로 파일을 복사해야했습니다.

편집 : 글쎄, 나는 그것을 열심히하고 있다고 생각합니다. Curt의 해결책을 시험 해봐야합니다. :)


0

이 작업을 수행하는 데 많은 시간을 보냈고 극복해야 할 문제가 거의 없었습니다. 가능하지만 여기에서는 이러한 문제를 해결하기 위해 따라야 할 몇 가지 문제와 규칙이 거의 없습니다.

오류:

작업 공간을 결정할 수 없습니다

이 특정 문제는 소스 분기 루트 폴더 에서 명령을 실행하여 해결되었습니다 . 이것은 "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에서 작동 하며 최소한 마이그레이션 옵션은 작동합니다.

0

다음 단계는 작은 크기의 선반 세트 (~ 20 개 이하의 파일)에 사용할 수 있습니다.

  1. 선반 세트 및 대상 분기에서 보류중인 모든 업데이트를 체크인하거나 롤백하는 것으로 시작합니다.
  2. 선반 세트 분기에서 해당 선반 세트의 파일을 선반 해제합니다.
  3. 대상 브랜치에서 보관되지 않은 선반 세트에 있던 기존 파일을 체크 아웃합니다.
  4. 선반 집합 분기의 보관되지 않은 파일을 대상 분기의 파일과 비교하여 병합 업데이트가 필요한 파일 (있는 경우)을 식별합니다.
  5. 필요한 경우 이전 단계의 해당 파일에 대한 병합 업데이트를 수동으로 수행하고 이러한 파일을 대상 분기 작업 공간에 저장합니다.
  6. 다른 선반 세트 파일을 선반 세트 분기 작업 공간에서 대상 분기 작업 공간으로 복사합니다.
  7. 대상 분기 작업 공간의 새로 업데이트 된 파일을 체크인 된 파일과 비교하십시오. 필요에 따라 수정하십시오.
  8. 대상 분기에서 새로 업데이트 된 파일을 체크인하십시오.
  9. 선반 세트 분기에서 보관되지 않은 파일을 롤백합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.