TFS의 작업 영역에서 현재 변경 집합 ID 가져 오기


80

현재 로컬 작업 공간에있는 변경 세트를 어떻게 알 수 있습니까?

물론입니다. 파일 하나를 선택하여 기록을 볼 수 있습니다. 그러나 해당 파일이 최근에 업데이트되지 않은 경우 해당 변경 집합은 동일한 솔루션에서 가장 최근에 업데이트 된 파일보다 오래되었을 수 있습니다.

한 가지 가능한 실수는 솔루션 파일의 기록을 보는 것입니다. 그러나 새 프로젝트를 추가하거나 솔루션 수준을 변경하지 않는 한 솔루션 파일은 거의 변경되지 않습니다.

마지막으로 변경 세트를 파악하려면 최근에 변경된 파일이 무엇인지 기억하고 기록을 확인해야합니다.

이 작업을 수행하는 더 좋은 방법이 있습니까?


현재 변경 세트를 알고 싶은 이유는 무엇입니까?
Ewald Hofman 2011 년

작업 영역이 변경 집합을 나타내지 않으면 어떻게됩니까? 당신이 것을 고려 $/A매핑, 당신은 변경 집합 A를 검색했습니다, 그리고 당신은 $/B매핑, 당신은 변경 집합이 당신의 작업 공간에 무엇 변경 집합 B를 검색 한?
Edward Thomson

8
@Ewald 버그가 발생하기 시작한시기를 찾기 위해 시간을 거슬러 올라가는 것을 고려하십시오. 이렇게하려면 작업 공간에서 "특정 버전 가져 오기"작업을 여러 번 수행하여 매우 지루하고 길이가 길며 오류가 발생하기 쉬운 이전 변경 집합을 가져와야 할 수 있습니다. 현재 작업 공간에있는 정확한 Changeset을 알 수 있다는 것은주의 산만 오류를 방지하고 원인을 확인하는 데 매우 유용합니다. 오늘 그 명령을 찾아서 기쁩니다.
Louis

1
나는이 질문을 칭찬한다!
Fernando Espinosa 2014 년

5 년 이상 후에 오신 것을 환영합니다. @EwaldHofman의 질문에 답하기 위해 내 시나리오에서 작업 공간을 몇 가지 변경했으며 마지막 '가져 오기'를 수행 한 이후 서버에서 변경된 사항을 확인하고 싶습니다. 제 경우에는 마지막으로 '가져온'버전이 무엇인지 모르겠습니다.
JMD

답변:



4

tf.exe history . /r직접 사용하는 일반적인 대답 은 작동하지만 매우 느릴 수 있습니다. 우리의 경우에는 10-15 초가 걸립니다. 이제 2 단계 검사를 사용하여 먼저 일부 임의 파일의 개정을 확인합니다 (루트 폴더에있는 파일을 사용하고 있습니다).

powershell 사용 :

$tfexepath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe"
$localpath = "C:\some\tfs\directory"

$result = & $tfexepath history $localpath /noprompt /stopafter:1 /version:W 
"$result" -match "\d+" | out-null
$id = $matches[0]

그런 다음 / r 플래그를 사용하여 루트 에서 검색 하지만 위에서 찾은 개정판에서 시작 하도록 검색제한합니다 .

$result2 = & $tfexepath history $localpath /r /noprompt /stopafter:1 /version:$id~W        
"$result2" -match "\d+" | out-null
$id2 =  $matches[0]

#result:
Write-Host $id2 

코드베이스의 경우 총 시간이 10-15 초에서 1.4-1.5 초로 단축됩니다.

내가 이해하는 한 단점이나 한계는 없지만 작은 저장소에서는 더 느릴 수 있다고 생각합니다. -알았 으면 좋겠어요.


1
훌륭한 대안. 내 런타임을 55 초에서 1.5 초로 줄였습니다. 감사!
bobroxsox

1
.... 돌이켜 보면-msvc와 함께 살 수 있다는 사실에 놀랐고 과거에만 처리해야했던 것이 기뻤습니다.
Johan Lundberg

3

Visual Studio CMD (제 경우에는 VS2015의 경우 "VS2015의 개발자 명령 프롬프트"라고 함)를 실행 한 다음 프로젝트 폴더로 이동하여 다음 명령을 실행합니다.

tf history . /r /noprompt /stopafter:1 /version:W

2
감사합니다! 이 대답이 없었다면 Visual Studio의 "명령 창"창에서 명령이 작동하지 않는 이유가 궁금했을 것입니다.
ojdo

1

PowerShell을 사용하려는 경우 ( 참조 ; @kroonwijk의 답변에 해당 ) :

  1. tfs 스냅인 활성화 (아직없는 경우 한 번)

    add-pssnapin Microsoft.TeamFoundation.PowerShell

  2. tfs cmdlet을 사용하여 현재 변경 집합 ID 가져 오기

    Get-TfsItemHistory <PATH_TO_PROJECT> -Recurse -Stopafter 1 -Version W


0

어떤 버전을 가지고 있는지 잘 모르겠다면 다른 권장 방법 중 하나를 사용해야합니다. 특정 버전이 있는지 확실하지 않거나 몇 가지 변경 세트 사이에 불확실하고 VS TFS GUI에서 작업하는 것을 선호하는 경우 다음 단계를 수행 할 수 있습니다.

  1. 확신 할 변경 세트를 선택하고 비교하십시오. 여기에 이미지 설명 입력
  2. 차이가없는 경우 : 여기에 이미지 설명 입력

    또는 다른 파일 만 변경 보류중인 파일 인 경우 : 여기에 이미지 설명 입력

즉, 해당 버전이 최신 상태임을 의미합니다.

  1. ** 보류중인 변경 사항이있는 파일이 실제로 최신 상태가 아닌지 확실하지 않은 경우 속성을 사용하여 해당 파일 버전을 확인할 수 있습니다. 여기에 이미지 설명 입력
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.