2012-12-21 89 views
8

我有一個開發了很長一段時間的分支。在開發過程中,默認分支被多次合併到該分支中。我現在想回顧一下忽略合併的所有更改,以決定將它合併到默認值是否安全。mercurial - 查看分支上的更改,忽略所有合併提交

我試圖

hg diff -r "branch('myBranch') - merge()"

,但它仍然顯示了合併帶來的變化。也試過下面這How to show the diff specific to a named branch in mercurial

hg diff -r "branch('myBranch') - branch('default')"

仍然使由合併帶來的變化。

回答

5

閱讀有關revsets語法

你的情況下

hg log -r "branch('myBranch') and ! merge()"

+0

感謝@懶獾,但恐怕產生輸出 '汞差異-r「分支(‘myBranch’) - 合併()」沒有不同' 我仍然看到合併帶來的變化。 順便說一句,你的意思是'hg diff -r「分支('myBranch')和!merge()」',不是嗎? – Swiety

+0

@Swiety 1)'log'和'diff'是不同的命令,**完全不同的命令** 2)當我寫'log'時 - 我寫了'log',因爲你必須得到**變更集列表**並測試集**中每個變更集的變化**(* more * than single diff,diff -c對於'log'集合中的每個修訂版)3)RTFM「形式邏輯」:'x - y'!='x和!''!!! **(在x中的變化集,但不在y中)!=(在x中的變化集而不是在y中)** - 回到學校 –

+1

我的形式邏輯不是很好,但在這種情況下不要'x-y'和'x和!y'給出相同的結果? 'myBranch'中的任何東西都不是合併? – icabod

6

與命令的問題是,當你執行一個hg diff並把它傳遞一些變更,你實際上執行這些變更集之間的差異,因此您將看到合併結果。

如果你想看到的只是由變更做出那麼你可以使用export的變化:

$ hg export -r "branch('mybranch') and not merge()" 
// lists the changes made by each changeset 

爲了便於審查,可以輸出這些到文件基於修改/變更ID名稱:

$ hg export -r "branch('mybranch') and not merge()" -o "%H.patch" 

...爲mybranch中的每個非合併變更集創建一個文件,並將其輸出到名稱爲「40位變更集id.patch」的文件中。如果您希望版本號(僅對本地存儲庫有用,因爲版本ID是本地版本號),請使用"%R.patch"

1

下使用log命令,但與--patch參數它可以顯示經修改的線,以及:

hg log --branch my-branch --no-merges --patch 

簡稱:

hg log -Mpb my-branch 
0

這是一個非常好的問題,我我很長一段時間都在努力尋找好的答案,但卻找不到一個好答案。 OK,一件事情是100%的工作原理是這樣的:

hg status  # make sure that you don't have local changes 
hg up <target_branch> 
hg merge <your branch> 
hg diff > merge.diff 
hg up -C # this one cleans the merge 

我用這個工作流程的所有的時間,但因爲它需要切換分支(它並不能完全滿足我的時候實際上我並不想這樣做實際的合併在這個確切的時刻,我只是檢查那裏有什麼)

我一直在尋找一個很好的解決方案在這裏的年齡,但到目前爲止沒有發現。想這些:

hg diff -r "branch('.') and ! merge()" # this page 
hg diff -r "default:branch('.') and not merge()" 
hg diff -r "parents(branch(.)):branch('.') and not merge()" 

這個問題也討論:

相關問題