programing tip

Mercurial에서 특정 버전의 파일을 얻는 방법은 무엇입니까?

itbloger 2020. 8. 3. 08:44
반응형

Mercurial에서 특정 버전의 파일을 얻는 방법은 무엇입니까?


나는 Mercurial을 처음 사용합니다. 올바른 명령을 찾을 수 없습니다. 운이없는 업데이트 / 체크 아웃을 시도했습니다. 로컬 저장소를 사용하고 있습니다. 감사


나는 당신이 원한다고 생각합니다 hg revert -r<rev> <file>(이것은 파일이 주어진 개정판과 같도록 변경 될 것입니다).


djc가 말했듯 revert이 이전 개정판과 일치하도록 파일을 변경합니다. 당신이 그것을 제자리에 원하지 않는다면 hg cat -r revisionid filename(revisionid와 filename을 대체하여) 파일을 stdout으로 출력하여 원하는 곳으로 리디렉션하는 데 적합합니다.


hg revert실제로이 문제를 해결합니다. 그러나 나는 당신이 단순히 당신의 질문에 대한 대답보다 더 넓은 범위의 것들에 대해 혼란스러워하고 더 완전하게 대답하려고한다고 생각합니다.

hg update전체 저장소 명령이며 개별 파일에서 작동하지 않습니다. svn update이런 식으로 Subversion과는 다릅니다 . 그렇게 hg --help update하면 명령이 파일 인수를 취하지 않기 때문에 이것이 사실임을 알 수 있습니다. 전체 리포지토리를 특정 스냅 샷으로 이동하는 데 사용할 수 있지만 한 파일로만 수행 할 수는 없습니다.

입력 hg --help하면 명령 목록이 표시됩니다. 그것은 다소 크고 다소 어려운 목록이지만, 그것을 읽으면이 줄을 찾을 수 있습니다 :

revert       restore individual files or directories to an earlier state

이제 비교 목적으로 마지막 상태를 원한다면 관심있는 다른 명령이 있습니다 hg cat. 그러면 특정 개정판에서 파일 내용을 인쇄 할 수 있습니다. 그런 다음 출력을 다른 파일로 리디렉션 할 수 있습니다. 그런 다음 이전에 알려진 올바른 버전의 파일과 이전 버전을 나란히 비교할 수 있습니다.

Mercurial이 별도의 update명령을 갖는 이유 는 Subversion에서 불가능한 Mercurial에서 무언가를 수행 할 수 있기 때문입니다. 당신은 할 수 있습니다 update이전 버전으로, 변경 후 커밋합니다. 분기가 생성됩니다. update명령은 현재 작업 디렉토리의 상위 개정판을 변경하고 해당 디렉토리에있는 모든 파일의 내용을 해당 상위 개정판 버전으로 변경하는 효과가 있습니다.

revert, 파일 내용 (또는 명령에 올바른 인수를 제공하는 경우 전체 저장소)을 변경하지만 현재 작업 사본의 상위 개정은 동일하게 유지해야합니다.

hg parents명령 을 사용하여 현재 작업 사본의 상위 개정 (또는 병합의 경우 개정)을 찾을 수 있습니다 .

Subversion 개정판은 엄격하게 선형 진행됩니다. Mercurial은 모자를 떨어 뜨릴 때 가지를 만들고 거의 병합하기가 쉽습니다. 개정은 엄격하게 선형적인 진행이 아닌 DAG를 형성합니다.


특정 파일의 특정 개정을 추출하려면 Windows에서이를 수행 할 수 있습니다.

hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"

여기서 9는 개정 번호입니다.

또는 더 나은 :

hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"

이전 버전을 얻으려고 여기 왔으므로 정확한 명령은 다음과 같습니다.

hg revert -r .~1 <file>

참고 URL : https://stackoverflow.com/questions/2107330/how-to-get-a-specific-version-of-a-file-in-mercurial

반응형