2012-03-17 83 views
0

我使用的水銀,我有一個diff感謝這個命令:hg 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; 

在另一個倉庫,我想測試是這個差異可以應用。我知道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)來幫助使本地克隆創建更便宜。 – 2012-03-17 18:47:19

+0

我認爲你誤解了'分享'的(很少)優勢。通過系統上的硬鏈接,您不會在本地克隆上節省空間和時間。 https://gist.github.com/2089965 – 2012-03-19 01:49:06

0

我最喜歡@Mark Tolonen的回答 - 在Mercurial中,一個新的本地克隆幾乎是瞬間的,並且由於使用硬鏈接幾乎不佔用空間。

但是,如果你不能堅持這樣做,那麼使用--no-commit選項,然後恢復。

  1. hg import --no-commit the.diff#檢查如果成功或失敗
  2. hg revert --all#撤消試圖進口
+0

感謝您的回答。問題是,如果我已經在我的工作樹中獨立地修改了我的修補程序,我將放棄它:-( – 2012-03-18 10:33:12

+0

是的,那麼你應該製作克隆,這正是我所要做的。總的來說,儘管你不應該如果你的項目有一個全部提交必須編譯的需求,那麼很容易就可以在以後崩潰它們。 – 2012-03-19 01:50:44