2009-10-20 5 views
1

누군가 자신이 아닌 다른 사람이 실수로 TFS에서 파일을 삭제하고 체크 인하였습니다. 그런 다음 오류를 발견하고 잃어버린 파일을 대체하려고했습니다. 그 자신의 하드 드라이브. 그의 오류와 그것을 발견 한 사이에 다른 사람들이 인접한 파일을 변경했습니다. 이제 삭제 된 파일을 삭제하기 전의 상태로 롤백하고 싶지만 원본 파일과 대체 파일을 (정확하게 이해할 경우) 파일 이름 충돌 오류가 발생합니다.사용자가 파일을 삭제하고 동일한 이름을 가진 새 파일을 만들 때

다른 작업이 끝난 후 전체 프로젝트를 롤백 할 수 없습니다.이 파일을 이전의 "이전"상태로 되 돌리고 싶습니다.

누구든지이 문제를 가지고 해결 했습니까? 아니면 해결책이없는 것입니다.

답변

1

귀하의 의견을 보내 주셔서 감사합니다. 나중에 참조 할 경우이 방법으로 마침내 문제가 해결됩니다.

먼저 파일의 로컬 복사본을 가져 왔습니다.

소스 제어 탐색기에서 이전 파일이 삭제되었지만 새 파일이 아직없는 변경 집합으로 파일이 포함 된 폴더를 롤백했습니다. 파일의 삭제를 취소하고 체크인하여 원본을 다시 "뒤에서"가져 왔습니다.

그 후, 내 로컬 복사본과 복구 된 파일을 diff 도구 (나는 BeyondCompare BTW를 사용함)에 넣고 복구 된 파일을 새 버전과 일치하도록 수정하는 경우가 많았습니다.

나는 때문에, 즉 몇 가지 이유에이 작업을 수행 할 수 있습니다 :

  • 을 삭제하고 다시 추가 파일이 두 개의 연속 변경 집합으로 이루어졌다.
  • 복구 된 파일과 로컬 복사본의 차이는 "매우 사소한"(즉, 추가 된 방법과 다른 방법으로 변경된 해킹)입니다.

예를 들어 몇 주 후에 우리가 주변 코드에 몇 가지 변경 사항을 적용했을 때까지 문제의 파일을 놓치지 않았다면 어떤 일이 일어 났는지 전혀 알지 못합니다. 또한 로컬 버전에 대한 실질적인 변경이 복구 가능성을 의미하는지에 대한 단서도 없습니다.

0
  • 솔루션을 다른 작업 복사본으로 롤백하십시오.
  • 삭제 된 파일을 해당 작업 복사본에서 당겨 현재 작업 복사본으로 되 돌리십시오.
  • 해당 파일을 현재 프로젝트에 체크인하십시오.

여기서 볼 수있는 유일한 문제는 삭제 된 파일의 기록이 손실 될 수 있다는 것입니다.

+0

이것은 그가 실행중인 네임 스페이스 충돌을 해결하지 못합니다. –

0

Power Tools의 직업과 비슷합니다. 여기 요 :

주석에 언급 된 바와 같이
$deletedFiles = 
    Get-TfsChangeset 12345| 
    % { $_.changes } | 
    ? { $_.changetype.tostring().contains("Delete") } | 
    % { $_.item.serveritem } 

$deletedFiles | 
    Add-TfsPendingChange -Delete | 
    New-TfsChangeset -Comment "Delete mistakenly re-added files" 

$deletedFiles |  
    Get-TfsChildItem -Deleted | 
    ? { $_.changesetid -eq 12345 } | 
    # this bit of ugliness is required by a bug in the Power Tools 
    % { "$($_.serveritem);X$($_.deletionid)" } | 
    Add-TfsPendingChange -Undelete | 
    New-TfsChangeset -Comment "Undelete old files" 

이 최종 파이프 라인 분석 추악한 문자열이 이상적인 파워 쉘 세계에서 필요는 없습니다. 일이 의도 한대로 작동하면 해당 행을 제거 할 수 있습니다 (또는 이와 동등하게는 Select-TfsItem |으로 바꿀 수 있습니다). 불행히도 전동 공구는 의도 한대로 삭제 ID를 처리하는 것처럼 보이지 않습니다.

어쨌든이 스크립트는 요청한대로 처리해야합니다. 참고 :

  • 사용자가 실수로 파일을 원하는 경우
  • 을 삭제 변경 집합으로 12,368 교체는
  • 이는 다른 어떤 변화를 되돌릴 수없는 파괴와 제 2 파이프 라인에 체크인 + 삭제 교체 시스템 (# 12345의 다른 변경 사항 포함), 파일 이름 충돌을 야기하는 파일들
관련 문제