在Mercurial中清除修订历史记录

Pau*_*aul 9 mercurial

我是Mercurial的新手,我还在努力建立一个工作流程.

我克隆了一个远程存储库.然后我进行更改并提交到我的本地存储库.我想推出一个干净的修订历史.我不想推出一些可能只会使远程存储库变得混乱的修订(例如,对方法进行拼写重命名,添加javadoc,删除空格等).这可能吗?

谢谢!

Obe*_*nne 8

实际上,有些情况下修剪/剥离/抛光变更集或分离私有/进行中和公共/准备好的更改是有意义的.以下是如何使用Mercurial处理此问题的一些建议:

  1. 如果您进行了一系列小型提交(这是一件好事),但您更喜欢将它们发布为一个更改集(如果您提交了 - 可能与之相矛盾的快照更改集,则有意义),请使用折叠扩展:

    $ hg collapse -r <first-ref>:<last-ref> # both revs including
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果您只想进行更改,而您想要发布其他人,则(a)使用mercurial队列进行私有更改或(b)在自己的分支中提交私有更改(命名,加入书签或克隆)并定期将其与公共部门合并.如果您交替进行私有和公共更改,后者要求您经常在分支之间切换.


UPDATE

为了说明选项2.b,请考虑以下变更集图:

0--1--4--5---8--9   <= public/stable branch
    \     \
     2--3--6--7     <= private/dev branch
Run Code Online (Sandbox Code Playgroud)

这意味着您所做的改动2,并3开发分支.然后你在稳定分支上做了一些工作(修订45).这些更改在dev中也有意义,因此您将它们合并到dev(revision 6)中.最后,您在另一个实验改变开发(修订版7)和一些随时可以发布在改进稳定(修订89).您现在可以通过运行发布(即推送到远程存储库)在stable中所做的更改

$ hg push -r 9     # or `-r stable` if the branch is named or bookmarked as such
Run Code Online (Sandbox Code Playgroud)

所有私人变更将留在当地!

请注意,如果您计划稍后改进您的私有提交(例如将它们折叠为一个变更集),则不得在稳定分支中合并(折叠不能在合并之间工作).取而代之的是,重订,只要你希望他们保持同步的最新变化,你的私人变化稳定.