2012-04-24 9 views
1

bitbucket에서 호스팅되는 수은 저장소 my_project이 있습니다. 오늘 나는 많은 변경 작업을 수행하여 로컬 저장소에 커밋했지만 아직 푸시하지 않았습니다.mercurial : 커밋 후, 푸시하기 전에 삭제 된 저장소에서 복구

다음 나는 majorly 채우고 fatfingered rm -rf my_project (!!!!!).

오늘 내가 저지른 변경 사항을 검색 할 수있는 방법이 있습니까? 나는 커밋의 하루 가치가 많이 들리지는 않는다는 것을 압니다.

이 프로젝트의 다른 모든 복제본은 최신 변경 사항 (현재 변경 사항을 포함하지 않음)의 최신 상태입니다.

건배.

+1

자신을 감사 할 수 삭제 된 파일. 그것은 OS와 파일 시스템에 달려 있습니다. superuser.com에서 물어볼 수 있습니까? – Thilo

+1

Btw, 두 번째 구현은 항상 더 깨끗하고 첫 번째 :-)보다 좋다 – zerkms

+0

Bw? –

답변

3

수은이 당신을 구할 수 없습니다. mercurial의 데이터는 프로젝트 폴더의 기본 디렉토리에 저장됩니다. 귀하의 경우 아마 my_project/.hg입니다. 재귀 적 삭제는이 폴더도 삭제합니다.

그럼 아마도 file recovery tool일까요?

+0

그래, 고마워. 내가 테스트를하는 동안 오늘 버전의 코드를 설치했고, R 코드이므로 각 함수의 코드를 검색 할 수있을만큼 충분히 운이 좋았다. 아무것도 아냐!) –

1

아니요. 변경 사항은 사용자가 푸시 할 때까지 로컬 저장소 디렉토리 (그 내부의 .hg 디렉토리)에만 저장됩니다. 그것들은 절대로 다른 곳에 놓이지 않습니다 (심지어/tmp가 아님).

디스크에서 삭제 된 파일을 복구 할 가능성이 있습니다. 그 일을하기위한 지침과 도구를 둘러보십시오.

+0

그래, 고마워. 내가 테스트를하는 동안 오늘 버전의 코드를 설치했고, R 코드이므로 각 함수의 코드를 검색 할 수있을만큼 충분히 운이 좋았다. 아무것도!) –

1

커밋이 작업 복사본과 함께 삭제되고 파일 복구 도구가 누락 된 .hg 폴더를 복구하는 유일한 옵션 일지 모르겠습니다. 설치 코드를 복구 할 수 있습니다.

당신이 다시 발생이 두려워하는 경우, 당신은 설치할 수 강제 ~/backup-repos에 따라 적절한 환매 특약에 모든 커밋의 사본을 밀어 버린다

[hooks] 
post-commit = R=~/backup-repos/$(basename "$PWD"); 
       (hg init "$R"; hg push -f "$R") > /dev/null 2>&1 || true 

같은 원유 후크. -f 플래그를 사용하면 내역을 수정하는 rebase 또는 mq와 같은 확장 프로그램을 사용하여 재생 한 경우에도 백업을 푸시 할 수 있습니다. 또한 관련없는 저장소에서 변경 집합을 동일한 백업 저장소로 푸시 할 수 있습니다. 두 개의 다른 저장소 인 foo을 상상해보십시오. 따라서 백업 저장소는 잠시 후에 거대한 변경 집합으로 끝날 것이므로 한 번씩 삭제하려고 할 수 있습니다.

나는이 간단하게 테스트 및 일상 업무를 위해 당신이 여분의 사본의 오버 헤드를 알 수 있습니다 생각하지 않고 당신이의 파일 시스템 레벨 복구에 내려 오는 것 같아요 나중에 :-)

관련 문제