2010-07-18 12 views
14

因此,在Subversion中,當我執行svn up時,我會得到已添加,修改,刪除和衝突的文件列表。當我做一個hg pull和hg更新時,會更改哪些文件vs vs

當我做一個hg pull然後hg up -v它只是顯示一個列表:getting file.ext但我無法知道如果該文件是新的或已經存在。有沒有辦法讓Mercurial顯示與添加,修改或刪除文件相同的元類型?

Mercurial是否提供了我所要求的任何能力?

回答

17

使用status命令列出工作副本之間的文件狀態變化的所有的變更充分比較和其父母版本或之間兩個修訂。它給你這樣的輸出:

$ hg status --rev .:tip 
M hgext/keyword.py 
M mercurial/cmdutil.py 
M mercurial/commands.py 
M mercurial/context.py 
M mercurial/patch.py 
A tests/test-encoding-align 
A tests/test-encoding-align.out 

對應於本次更新:

$ hg update -v 
resolving manifests 
getting hgext/keyword.py 
getting mercurial/cmdutil.py 
getting mercurial/commands.py 
getting mercurial/context.py 
getting mercurial/patch.py 
getting tests/test-encoding-align 
getting tests/test-encoding-align.out 
7 files updated, 0 files merged, 0 files removed, 0 files unresolved 

編輯:您可以創建一個preupdate鉤總是得到這個信息,你更新的一部分。我正好是在Windows上,現在,這裏這個hook工作:

[hooks] 
preupdate = hg status --rev .:%HG_PARENT1% 

更換%HG_PARENT1%$HG_PARENT1在類Unix系統。這應該使Mercurial的體驗更加顛覆性的:-)

+0

謝謝!我可以做一個「HG ID」獲得我目前在修改的「HG拉」,然後「HG STAT --rev PREVIOUS_REV:tip」,它正是我想要的 – James 2010-07-21 00:54:20

+0

James:謝謝你接受這個答案,我很高興我能幫忙! :-) – 2010-07-21 09:48:56

+0

你應得到比你得到這個答案更多的積分。 – Omnifarious 2010-07-27 03:04:59

6

hg incoming --stat命令執行類似於您所要求的操作。另外,如果你正在更新到一個新版本,你可以做hg diff --git -r <rev>,它會給你一個差異來顯示哪些文件是新的。

+0

hg傳入--stat仍然不告訴我,如果文件是新的或不是,我將不得不在每個文件上運行hg diff來查看。最糟糕的情況是,我可以在更新之前遞歸目錄,在更新之後查看新增內容,但看起來非常糟糕。這讓我很驚訝,這個信息更容易獲得 – James 2010-07-19 00:07:31

+0

@James - 我想知道'log'的專門模板是不是可以處理這個問題的。我會調查一下,看看。 – Omnifarious 2010-07-19 05:04:49

19

全有你的答案,我也投了贊成票,但只是爲了顯示所有的選項:

前拉

  • 汞進入#顯示的變更,你會得到
  • 汞進入--verbose#顯示您將獲得的變更集,包括每個文件列表
  • hg傳入--patch#顯示您將獲得的所有變更集的完全差異

拉動(而不是更新)後:

  • 汞柱登錄-r:提示#顯示你有
  • 汞柱登錄--verbose -r變更集:提示#顯示你有包括變更每個
  • 文件列表汞柱登錄--patch -r:行程#顯示你有
1

你可以使用hg incoming捆綁,以應用馬丁的答案你還沒有真正拉動的變化。

> cd myrepo 
# Get the latest revision in my copy 
> hg tip 
changeset: 17:5005ce2dc418 
. 
. 
. 
# Get a bundle file of changes, but don't put them in myrepo yet 
> hg incoming --bundle changes.bundle 
# Overlay the bundle on myrepo and do hg status as if I've already pulled 
> hg -R changes.bundle status --rev 17:tip 
A addedfile 
M modifiedfile 
. 
. 
. 
# Changes are good! Pull from bundle 
hg pull changes.bundle 
相關問題