2013-02-24 83 views
1

我剛剛從遠程克隆了一個回購。本地提交後的差異

我構建的軟件,更改了約4個文件,承諾他們在本地,現在想創建一個補丁,我可以顯示他們。

當我運行:

hg diff -U8p abc efg pqr > patch_file 

我沒有看到我所做的更改。 hg diff只會將當前文件與上次提交的文件進行比較嗎?

我如何得到這個工作?

+2

爲什麼不使用捆綁,如果雙方是水銀,而不是差異? – 2013-02-24 14:20:25

+0

@LazyBadger:我不知道這一點。是的我可以。但是他們的網站提到了這種方法 – batman 2013-02-24 16:31:27

回答

3
  1. diff針對特定版本REV工作目錄,使用

    hg diff -r REV 
    
  2. 要互相比較兩個版本,使用

    hg diff -r REV1 -r REV2 
    
  3. 要弄清楚哪些修訂比較,檢查hg log的輸出。如果你會做這個有很多和基礎版本是固定的,給它一個名稱(例如,whatipulled)與

    hg tag -r REV whatipulled 
    

    然後,您可以指定whatipulled作爲修訂,而不是數字轉速ID (或散列)。

  4. 要導出的diff更豐富的格式,包括提交評論等,你還可以使用其目的是爲了這個目的如下:

    hg export -r REV 
    
  5. 還有hg bundle -r REV,其產生的二進制文件具有類似的信息。

  6. 但是,如果你發送更改回母公司回購,最好的方法是使用hg push。它將您的變更集直接傳達給家長;你甚至不需要知道哪些變更需要推送。當然,你必須有權推到父母回購。

    hg push [ parent_repo_url ] 
    

    (如果你很拽,善變應該已經知道的路徑,你可以離開它)。

  7. 如果父回購是在bitbucket上,並且您沒有pu,則可以在bitbucket上設置您自己的帳戶,從本地回購庫中拉出/推送該帳戶,然後發出「拉請求」給項目回購,要求他們從你那裏拉。

以上所有都有控制其行爲的選項,請參閱。

0

默認情況下,hg diff將當前檢出的文件與上次提交進行比較。您可以通過添加選項更改此:

  • -r REV當前簽出的文件與特定修訂REV進行比較。
  • -c REV顯示了修訂版本的情況下做出REV

所以變化hg diff -c 123 ...會給你的差異。如果只指定一個版本,那麼提交123

+0

如果我需要將它與最初克隆的回購進行比較,該怎麼辦?我做了任何改變之前的一個。該版本的「REV」是什麼? – batman 2013-02-24 12:50:59

2

hg help diff

該修訂版與工作目錄

在diff的-r中,必須先使用舊的提示(最新的「不是你的」變更集),並在差異化之前更新到提示(最新的變更集)。

如果一些二進制數據是在您的變更修改,不要忘記使用-g選項

hg up & hg diff -r <CSET> -g > some.patch

改進DIFF任何主動變更,沒有手的工作檢測基地變更(線性在單分支歷史==)

hg diff -r "parent(min(outgoing()))" -r tip

1

我的猜測是,hg outgoing是你想要什麼 - 它比較您在本地有犯了什麼默認遠程服務器上有什麼,並向您顯示這些更改集的列表或-p提交。

但是,這樣做會分別顯示每個變更集。如果你想看到所有組合的變化,你必須做hg diff -r HERE -r THERE或因爲-r HERE是默認的,hg diff -r THERE

我看到你問了註釋「我怎麼知道有什麼」,其中其中是最後一個遠程變更集,您可以通過執行hg outgoing來獲得答案。如果hg outgoing顯示它會發送變更集66,67和68,那麼您想要做hg diff -r 65來比較已有的(65)和本地的(68)。

+0

使用revset(直接在diff中)會更聰明。在線性歷史記錄的情況下,revset將爲「父(min(outgoing()))」 – 2013-02-24 20:10:48

+0

良好的呼叫。你應該改變你的答案。 – 2013-02-25 03:40:20