TFS : 배치 파일에서 수정되지 않은 파일의 체크 아웃을 실행 취소하는 방법


172

배치 파일을 사용하여 코드를 생성하고 TFS (Team Foundation Server)에서 생성 된 파일을 자동으로 체크 아웃하여 파일을 재생성 할 수 있습니다. 이러한 파일의 대부분은 수정되지 않지만 생성기는이를 미리 알지 못합니다.

"tfs undo"명령은 체크 아웃을 취소하지만 일부가 수정되었는지 (우리가 원하지 않는) 프롬프트를 표시합니다. 또한 생성 된 파일을 즉시 체크인하고 싶지 않습니다.

사용자에게 프롬프트하지 않고 수정되지 않은 모든 파일의 체크 아웃을 취소하는 명령 (또는 일련의 명령)이 있습니까?


수동으로 선택의 기대와 모든 변경 취소 주 "에 없음을 모든"파일에 대한 메시지가 나타나면 했다 가 취소되므로, 제대로 작동하지 않을 수 변경 ADD(참조 메시지를 표시하지 않고 변화를 레이의 답변을 ).
Elaskanator

답변:


202

2011 년 8 월 Team Foundation Server Power Tools 의 Undo Unchanged 명령을 살펴보십시오.

c:\myProject> tfpt uu . /noget /recursive

링크 업데이트를위한 Matt Florence에게 감사합니다.

실제 구문에 대해 Ray Vega에게 감사드립니다 .


1
답변 내용의 일부로 사용 정보가 포함되도록 편집 / 병합해야합니다.
mcw

4
: 당신은 정말이 게시물 읽고 싶은 aaubry.net/undo-checkout-on-unchanged-files-tfs.html
바이런 틀록

17
흠, 거의 모든 사람들이 매일 여러 번 일을한다. "Power Tools라는 별도의 설치 프로그램에
넣자

1
@Mike Chaliy 당신은 생각할 것입니다. 나는 지금 TFS를 시험 해보고 있는데 이것을하는 방법을 찾고 있었고 결국 여기에있었습니다.
vidstige

3
변경 사항이 병합되면 작동하지 않습니다. tfpt uu는 파일 변경이없는 경우에도 항상 병합을 실제 변경으로 간주하고 해당 동작을 뒤집을 수있는 옵션이없는 것처럼 보입니다. 기본 동작으로는 괜찮지 만 때로는 원하는 것이 아닙니다.
user1164178

124

Team Foundation Server Power Tools를 설치 하고 프로젝트 작업 공간 디렉토리의 루트에있는 tfpt.exe를 사용하여 명령 행에서 다음을 실행하십시오.

c:\myProject> tfpt uu . /noget /recursive

포함 /noget은 전체 수에 따라 시간이 오래 걸릴 수있는 모든 프로젝트 파일의 '최신 정보 얻기'를 방지하므로 적극 권장됩니다.


12
이것은 정답이어야하며, 모든 관련 세부 사항이 있습니다 (높은 점수로 입증 됨).
rikoe

7
멋있는. 또한 이것을 Visual Studio에 영구적 인 '외부 도구'로 추가하지 마십시오. 예를 들면 다음과 같습니다. blog.kurtschindler.net/post/… 명령 : [설치 디렉토리] \ TFPT.EXE 인수 : uu. / noget / recursive 초기 디렉토리 : $ (SolutionDir)
rohancragg

12
질문 은 프롬프트없이이 작업 수행하도록 지정 하지만 이에 대한 답변은 없습니다. 이것이 필요한 경우 추가 / noprompt 가 원하는 옵션입니다. PowerTools 설명서가 누락되었습니다! 여기에는 몇 가지 명령에 대해서는이 옵션이 나열되어 있지만이 명령에는 해당되지 않습니다 (UU). 조심해!
Johnny Kauffman

1
@ user20358 cd작업 공간 디렉토리가있는 곳 (예 : mine was c:\myProject) 또는 그 이후에 명시 적으로 포함 uu(기간 대체 .)
Ray

/ Y 또는 / force와 같은 강제 스위치가 있습니까? 나는 정말로 그것을 취소하고 싶은지 항상 묻는다. 그리고 나는 그것을 자동화하고 싶다. 거기에 / Y를 넣으십시오. 그러나 옵션 Y에는 값이 필요합니다.
Squirrelkiller

118

@mike & @ray 감사합니다.

더 쉽게 만들고 싶습니다.

VS의 도구 메뉴에서 "외부 도구"를 클릭하십시오.

외부 도구

추가를 클릭하십시오.

제목을 입력하십시오.

명령 : tfpt.exe

인수 : uu / noget / 재귀

초기 디렉토리 : [화살표 버튼에서 선택할 수 있습니다].

변경되지 않은 솔루션 취소

프로젝트에서 변경되지 않은 작업 취소

도구 메뉴에 두 개의 새로운 명령이 추가되었습니다.

필요할 때 사용하십시오.

즐겨,

Ofir


3
매우 시원합니다. 한 단계 더 나아가 바로 가기를 추가 할 수 있습니다. 추가 한 명령이 얼마나 멀리 있는지 확인하십시오 (예 : 네 번째 명령 일 수 있음). 그런 다음 도구-> 옵션-> 환경-> 키보드->로 이동하여 '포함 된 명령 표시'텍스트 상자 "Tools.External"을 입력하고 바로 가기를 지정하십시오. 예를 들어 새로 추가 한 실행 취소 명령이 네 번째 명령이므로 Tools.ExternalCommand4를 선택했습니다. 그런 다음 바로 가기 키를 Ctrl + Alt + U, Ctrl + Alt + U
Mario

1
이 버전을 업데이트 해 주시겠습니까? tf.exe를 찾았지만 uu 명령이란 무엇입니까? 인식 할 수없는 명령을 알려줍니다 : uu. 도움을 주셔서 감사합니다
Shay

1
@Shay : 최신 TFS 전동 도구가 설치된 VS2015에서 작동합니다.
Igor Malin 2016 년

27
  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭
  2. 결제 취소를 선택한 다음 확인을 클릭하거나 확인이 남아있는 경우 ...
  3. 그런 다음, 체크 아웃을 취소하는 동안 REAL이 변경된 모든 파일에 대해 해당 파일의 체크 아웃을 확인하라는 메시지가 표시됩니다. "모두에 아니오"를 클릭하십시오.

체크 아웃 된 파일에 변경 사항이 있는지 또는 없는지 Visual Studio에서 알 수 있습니다.

경고 : 이 방법은 파일, 즉 아직 TFS에 체크인되지 않은 파일 도 제거합니다 . 이러한 파일을 유지하려면 "실행 취소"한 파일 세트에서 해당 파일을 제외하십시오.


14
Be aware that this method also removes added files that are not yet checked in from TFS.... 예, 그것은 바로 즉각적인 실격자입니다.
shortstuffsushi

1
Baseless 브랜치 병합에 효과적입니다 . 감사. 일반적 으로이 경우 VS는 솔루션의 모든 파일을 변경된 것으로 표시했습니다.
KoViMa

2
nuget이 업데이트 할 필요가없는 10000 개의 파일을 체크 아웃 할 때 이것은 지옥입니다.
Ievgen Naida

13

TFS2017VS2017 / VS2019로 작업 할 때이 질문에 대한 답변을 업데이트했습니다 .

전동 공구는 TFS 2017에는 존재하지 않으며 이전 도구와 함께 사용할 수는 없지만 대부분의 기능이 VS2017 자체 또는 플러그인으로 이동되었습니다 (아래 참조).

Visual Studio 2017/2019 확장

변경되지 않은 파일 실행 취소와 같은 일부 작업이

VS2017의 확장

VS2019의 확장

"변경 취소"버튼 위치 :

변경되지 않은 버튼 위치 실행 취소

알려진 버그

보류중인 변경 사항보기의 조치 메뉴에 '변경되지 않은 취소'가 표시되도록 '소스 제어 탐색기'를 열어 두어야합니다. 여기에보고되었습니다 .

Windows 셸 통합 확장

또한 더 이상 TFS Power Tools에 연결되지 않은 별도의 설치 프로그램 을 통해 Windows 셸 통합을 설정할 수 있습니다 .

Windows 셸 통합은 이전의 powertools와 정확히 동일하게 작동하지 않지만 가장 중요한 작업은 저에게 효과적이었습니다.


나는 그 질문에 그들이 스크립트를 작성하고 싶다는 것을 알아 차렸다. 나는 해결책이 없기 때문에 두려워한다.
Schwarzie2478

1
연결된 확장을 설치 한 후 VS2017에서 "변경 취소 취소"옵션을 찾을 수 없습니다. 내가 뭐 놓친 거 없니 ?
Erzékiel

나는 그것을 많이 사용하지 않았습니다. 고객을 위해 테스트 할 때 팀 탐색기에서 약간 클릭하여 실행 취소 변경 사항이 있는지 확인해야했습니다. 이 옵션이 나타나는 커밋을 위해 대기중인 변경 사항 만 대기중인 경우에만 표시 될 수 있습니다. (또는 한 지점 만 변경) ...
Schwarzie2478

2
@ Erzékiel이 옵션은 솔루션 탐색기가 열려 있고 준비된 경우에만 나타납니다.
MatrixRonny

1
이 확장은 때때로 작동 하며 그 존재 솔루션 탐색기가 아닌 TFS 소스 제어 탐색기를 열어 놓는 것과 관련이 있습니다 (일부 잘못 지적되었으므로). 두 개의 다른 제어 창을 섞지 마십시오. 하나; 내가 가끔 말할 때, 그것이왔다 갔다하기 때문입니다. 지금은 없어요 한 달 전에 했어 그것은 약간의 버그가 있으며 Resharper와 같은 다른 확장 프로그램이 범인이라고 두려워합니다.
Christian

8

체크 아웃 한 모든 파일을 다시 체크인하기 만하면 TFS는 어떤 파일이 변경되었는지 파악하여 서버에 기록 된 변경 세트에만 포함시킬 수 있습니다.

TFS는 체크인 전후 파일 내용의 MD5 해시를 비교하여이를 수행합니다.

이것은 모두 생성 프로세스가 완전히 동일한 파일 세트를 업데이트한다고 가정하는 것입니다. 즉, 이전 세대에서 생성 된 파일이 다음 세대에 필요하지 않은 경우 (예 : 삭제 보류 중) 해당 파일) 또는 파일 이름이 변경됩니다.

프로세스에서 파일을 삭제해야하는 경우 Team Foundation Power Tools 명령 ( tfpt )을보고 변경된 파일 만 체크 아웃하는 스마트 한 tfpt 온라인 명령을 사용하는 것이 가장 좋습니다. pend는 더 이상 필요하지 않거나 이름을 변경 한 파일과 pend 추가를 삭제합니다.

행운을 빕니다,

남자 이름.


6
그 점에 감사하지만, 당시 수정 된 파일을 체크인하고 싶지 않습니다. 기능이 완료 될 때까지 수정 된 사항은 체크인하지 말아야하지만 수정되지 않은 기능은 제거해야 개발자가 변경 사항을 검토 할 수 있습니다.
Robert Wagner

@RobertWagner 게이트 빌드를 사용하는 경우 변경 사항을 먼저 빌드해야한다는 팝업 경고가 표시되면 동일한 파일 감지에서 중단되지 않으면 취소 할 수 있습니다.
Elaskanator

6

TFS 실행 취소는 파일 시스템의 "날짜 수정"값을 되 돌리지 않습니다. robocopy와 같은 도구를 사용하여 원격 시스템을 동기화하는 경우 특히 실망 스럽습니다. 체크 아웃을 취소 한 후에도 파일을 저장하여 "날짜 수정"값을 업데이트하면 실행 취소 체크 아웃 후에도 업데이트 된 값이 그대로 유지됩니다.


1
robocopy 또는 VCS를 사용하십시오. 혼합물을 사용하면 항상 불일치가 발생합니다. VCS에서 각 머신을 직접 채우는 것이 훨씬 좋습니다.
Richard

4

tfpt에 대한 uu 옵션 (대부분의 다른 답변에서 권장)에 대해 처음에는 명확하지 않은 몇 가지 사항이 있습니다. 첫째, 이것은 명령으로 액세스 할 수있는 명령 행 도움말입니다.tfpt uu /?

중복 보류 변경 사항을 취소합니다. 변경 보류중인 항목의 상태가 서버에서와 동일한 경우 변경이 취소됩니다.

사용법 : tfpt uu [/ changeset : changesetnum] [/ recursive] [/ noget] [filespec ...]

  • / changeset 최신 버전 대신 지정된 변경 세트 버전에서 작업 공간을 항목 상태와 비교합니다.
  • filespec ... 중복 된 변경 사항에 대해서는 나열된 파일 스펙 만 확인하십시오.
  • / recursive 전체 재귀와 함께 지정된 파일 사양을 확인합니다
  • / noget 확인하기 전에 get을 실행하지 마십시오

/ changeset 옵션은 filespecs 또는 / recursive와 함께 사용할 수 없습니다.

이제 다른 답변에서 권장되는 명령을 분석하겠습니다.

tfpt uu . /noget /recursive
  • tfpt uu 'Undo Unchanged'명령을 사용하도록 지정합니다.
  • . 현재 작업 디렉토리를 파일 사양으로 사용해야한다는 것을 나타냅니다.
  • /noget 변경되지 않은 파일을 실행 취소하기 전에 '최신 버전 가져 오기'가 호출되지 않도록합니다.
  • /recursive파일 스펙뿐만 아니라 모든 재귀 하위 폴더 및 파일도 고려합니다. 이것은 파일 스펙에 의존하는 것 같습니다. 제공되지 않은 경우 전체 작업 공간이 처리됩니다.

위의 명령과 관련하여 여기에 유의해야 할 몇 가지 사항이 있습니다.

  • 작업 디렉토리에 따라 다릅니다.
  • 전체 작업 공간을 처리하지는 않습니다.

다음 명령이 나에게 가장 효과적이라는 것을 알았습니다. 전체 작업 공간을 처리합니다.

tfpt uu /noget

tfpt는 디렉토리를 사용하여 처리해야 할 작업 공간을 결정한다는 점에서 여전히 작업 디렉토리에 의존합니다. 그러나 작업 공간 내에서 파일 또는 폴더의 경로를 제공하는 한 사용하는 것이 좋습니다.


3

위의 Ray LionFang 접근 방식을 볼 수 있습니다. 담당자가 없어서 댓글을 달 수 없습니다. Tools 등을 변경할 필요가 없기 때문에이 방법이 마음에 들지만 ........

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭
  2. 결제 취소를 선택한 다음 확인을 클릭하거나 확인이 남아있는 경우 ...
  3. 그런 다음, 체크 아웃을 취소하는 동안 REAL이 변경된 모든 파일에 대해 해당 파일의 체크 아웃을 확인하라는 메시지가 표시됩니다. "모두에 아니오"를 클릭하십시오.
  4. 체크 아웃 된 파일에 변경 사항이 있는지 또는 없는지 Visual Studio에서 알 수 있습니다. 이 방법은 아직 TFS에서 체크인되지 않은 추가 된 파일도 제거합니다.

..... "모두에 없음"을 누르면 수정되지 않은 파일이 몇 개 유지된다는 접근 방식에 문제가 있습니다. 수정되지 않은 파일은 실제로 수정 된 첫 번째 파일에 도달 할 때까지 수정되지 않은 파일을 실행 취소 한 후 수정되지 않은 나머지 파일은 무시합니다. 이 효과는 가끔 한 번만 보았습니다.

가능한 해결 방법은 위의 프로세스를 따르는 것이지만 "No To All"을 누르는 대신 각 파일에 대해 "No"를 누르십시오. 작업하는 파일 수에 따라 시간이 걸릴 수 있으므로 일반적으로 "ALT + N"을 누르고 있으면 수정되지 않은 모든 파일을 실행 취소하는 동안 모든 파일의 속도가 빨라집니다.


이것이 충분히 강조 될 수 없으므로주의하십시오. 이 방법으로 프로젝트에 새로 추가 된 파일도 제거됩니다. 이것은 다른 답변의 서버에도 언급되어 있습니다.
Christian

-20

내가 아는 한, TFS에서 팀 프로젝트를 체크 아웃하면 전체 프로젝트가 체크 아웃되고 어떤 파일이 중단되는지 제어 할 수 없습니다. 특정 파일에 대한 체크인을 방지하려면 해당 파일을 잠글 수 있습니다.

직장에서 우리 모두는 TFS를 싫어합니다.


1
우리는 개별 파일을 체크 아웃 할 수 있으며 잠금은 개발자가 그들을 확인할 수 없습니다.
로버트 와그너에게

5
투표권을 행사하려고했지만 "일할 때 우리 모두는 TFS를 싫어합니다." 저장했습니다.
James
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.