2012-01-14 95 views
10

在我推送到遠程存儲庫之前,我希望看到我本地存儲庫的頭部和我所推送的存儲庫的頭部之間的整合差異。我知道這樣做的最佳方式是遠程存儲庫hg clone,獲取頭部的修訂版,然後在我的頭部和該修訂版本之間做一個差異。但這是非常耗時的。有沒有快速的方法?如何查看本地資源庫頭和遠程資源庫頭的差異?

+2

如果您推送的頭部不是您當前版本的祖先的存儲庫,是不是您可能做了一件非常錯誤的標記? – geoffspear 2012-01-14 15:15:00

+1

遠程存儲庫的頭部是我當地負責人的祖先。我想在這個腦袋和我的當地腦袋之間找到差異。所以也許我只想要一個hg命令來打印遠程倉庫的頭版本。然後我可以手動比較該版本。 – jhourback 2012-01-15 20:58:38

回答

11

如果您正在尋找一種方法來獲取您所做的所有不在遠程存儲庫中的更改。

$ hg outgoing -p 

-p是可選的,在補丁的形式報告,否則以同樣的方式一個hg log報告。無論是否有其他人將任何內容推送到遠程存儲庫,這只是您的更改。

如果您正在尋找在遠程倉庫,你沒有改變,那麼你使用

$ hg incoming 

同樣有一個-p形式,如果你想要它。


這些都不是你所要求的,但我懷疑你實際上並不想這樣做。

如果您確實想要更改與其他人創建的遠程回購中的新頭之間存在差異,那麼您需要撤消其更改。

hg pull 
hg heads      # find revision number of new head 
hg diff -r 124992   # or whatever the revision number is. 
22

除了

$ hg outgoing -p 

我正常使用的,我會喜歡你指向revision sets。這是一種查詢語言,您可以使用hg diff(以及可讓您指定更改集的所有其他命令)。所以,你可以通過

$ hg log -r "outgoing()" -p 

實現hg outgoing -p,你可以得到第一個傳出變更的家長和最後傳出變更之間的差異與

$ hg diff -r "p1(first(outgoing()))" -r "last(outgoing())" 

最後,remotebranch extension可以維護有關本地信息遠程分支,以便您不需要使用網絡查找此信息。它可以讓你使用

$ hg log -r "not pushed()" 

找到傳出變更集,但它的速度更快,因爲沒有涉及網絡往返。