创建一个新的分支,做了很多更改,如何查看文件列表更改?

cod*_*ing 9 mercurial branch dvcs kiln

因此创建了一个新分支,我们对代码库进行了一些重大更改.

现在我们要合并,但在此之前我想获得分支中已更改的所有文件的列表.

我怎样才能获得文件列表?我试过了:

hg status --change REV
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否是我想要的,因为我希望在此分支中更改所有文件而不是分支中的特定修订.

顺便说一句,我如何查看修订号?

Mar*_*ler 8

试试吧

$ hg status --rev "branch('your-branch')"
Run Code Online (Sandbox Code Playgroud)

获取分支上第一个和最后一个变更集之间的更改(hg status将隐式使用,min(branch('your-branch'))max(branch('your-branch'))在您为其提供一系列此类修订时).

既然你要合并,你应该看看

$ hg status --rev default:your-branch
Run Code Online (Sandbox Code Playgroud)

看看分支和之间发生了什么变化.这将向您显示已完成的修改,并过滤掉由于合并而在分支上执行的任何修改.defaultyour-branchdefault

如果您的历史记录如下所示,这是必要的:

your-branch:      x --- o --- o --- o --- o --- o --- y
                 /           /           /
default:  o --- a --- o --- b --- o --- c --- o --- o --- d
Run Code Online (Sandbox Code Playgroud)

您已经合并default到您的分支机构几次.合并default到你的分支是正常的,因为你想定期整合来自该分支的最新东西,以避免分支漂移太远.

但是如果引入了一个新文件default并稍后合并到B那里,那么你真的不想在hg status输出中看到它.如果你这样做,你会看到它

$ hg status --rev a:y
Run Code Online (Sandbox Code Playgroud)

因为该文件不存在a,但存在于y.如果你这样做

$ hg status --rev d:y
Run Code Online (Sandbox Code Playgroud)

然后你不会在输出中看到该文件,假设它存在于两个头中.


您在评论中写道,您正在使用Kiln存储库.当他们说"分支"时,他们的意思是"克隆",但上述内容仍可根据您的情况进行调整.所有变更集都将在default 指定的分支上,但这没关系.

在"branch"存储库的本地克隆中运行以下命令:

$ hg bookmark -r tip mybranch
Run Code Online (Sandbox Code Playgroud)

这标志着当前的提示作为头mybranch.然后从主存储库中提取所有变更集:

$ hg pull https://you.kilnhg.com/Repo/public/Group/Main
Run Code Online (Sandbox Code Playgroud)

然后,将提示标记为主存储库的提示:

$ hg bookmark -r tip main
Run Code Online (Sandbox Code Playgroud)

你现在可以跑

$ hg status --rev main:mybranch
Run Code Online (Sandbox Code Playgroud)

看之间的变化mainmy-branch.如果你想看看你在分支机构上做了什么,使用

$ hg status --rev "::mybranch - ::main"
Run Code Online (Sandbox Code Playgroud)

::mybranch部分将选择作为祖先的变更集mybranch- 这是您的所有新工作,加上您分支之前的旧历史记录.我们删除旧历史- ::main.在较旧版本的Mercurial中,您可以使用hg log -r -r mybranch:0 -P main.