2012-03-17 2 views
0
내가 의욕을 사용하고

을 확인하고 나는이 명령에 DIFF 덕분에이 : hg diff의욕 - 정신 패치

가 여기 내 DIFF (예)입니다 :

diff -r 17899716342e config.js 
--- a/config.js Sat Mar 17 14:01:53 2012 +0100 
+++ b/config.js Sat Mar 17 18:15:16 2012 +0100 
@@ -8,6 +8,6 @@ 
]; 

config.hostname = 'localhost'; 
-config.port = '3000'; 
+config.port = '8080'; 

-module.exports = canfig; 
+module.exports = config; 

다른 저장소에서, 나는 싶습니다 테스트는이 diff가 적용될 수 있는지 테스트합니다. hg import은 현재 저장소에서 diff를 가져올 수 있다는 것을 알고 있습니다.

사람에서

:

-f --force     skip check for outstanding uncommitted changes 
    --no-commit    don't commit, just update the working directory 
    --bypass     apply patch without touching the working 
          directory 

을하지만 패치가 내 저장소 (내 작업 트리)을 수정하지 않고 을 적용 할 수있는 경우 바로 확인 할 인수가 없습니다.

어떻게하면됩니까?

답변

2

현재 작업 디렉토리 나 저장소를 수정하고 싶지 않으면 로컬 복제 가능 복제본을 만들고 패치를 적용 할 것을 제안합니다. 그렇지 않으면 그렇게 할 방법이 없다고 생각합니다.

확장 프로그램을 사용하면 현재 변경 사항을 저장하고 패치를 적용하고 원래의 부모에게 깨끗하게 업데이트하고 변경 사항을 취소 할 수 있습니다. 복제가 더 단순 해 보입니다.

+0

당신은 또한 [공유] (http://mercurial.selenic.com/wiki/ 사용을 고려할 수 있습니다에게 취소 ShareExtension)을 사용하면 로컬 복제본을 더 저렴하게 만들 수 있습니다. –

+0

나는 당신이 '몫'의 (아주 적은) 이점을 오해하고 있다고 생각합니다. 시스템의 하드 링크를 사용하면 공간이나 시간을 로컬 복제본에서 절약 할 수 있습니다. https://gist.github.com/2089965 –

0

@Mark Tolonen의 대답이 가장 좋아요. Mercurial에서 새로운 로컬 복제본은 거의 즉각적이며 하드 링크를 사용하기 때문에 거의 공간을 차지하지 않습니다.

그러나 그렇게 할 수 없다면 --no-commit 옵션을 사용하고 되돌립니다.

  1. hg import --no-commit the.diff # 체크가 성공하거나 실패 할 경우
  2. hg revert --all #이 시도 된 수입
+0

답변 해 주셔서 감사합니다. 문제는 이미 작업 트리에서 패치의 일부를 독립적으로 변경하면 느슨하게 될 것입니다 :-( –

+0

그래, 그럼 어쨌든 내가 할 수있는 복제품을 만들어야합니다. 커밋되지 않은 변경 사항을 많이 수행하지 않아도됩니다. 일찍 커밋하고 자주 커밋합니다. 프로젝트에 모든 커밋 필수 컴파일 요구 사항이있는 경우 나중에 쉽게 닫을 수 있습니다. –