Gig*_*ron 6 mercurial dvcs bazaar rebase
我是DVCS的新手,所以我可能误解了一些概念和术语,但这是我想要实现的想法,我试图找出Bazaar或Mercurial是否以直截了当的方式支持这一点:
主存储库中有经过良好测试的代码.假设我克隆(或拉或分支或其他任何术语)从那里克隆到本地存储库,然后每天当我处理我提交的代码本地更改时,有时一天多次.
在完成所有更改和测试之后,我想只获得放入主存储库的每个文件的最新(本地)提交版本,而不是我在调试和单元测试期间本地提交的几十个中间版本.
根据我一直在阅读的内容,显然这些半生不熟的版本的整个历史将反映在主存储库中,如果我推动它.一些互联网文章似乎暗示如果处理得当,rebase可以解决这个问题,但是不清楚是否/如何做到这一点,因为看起来rebase更多的是避免分叉的分支/合并历史而不是避免提交大量中间版本.
您正在寻找的关键字是折叠或折叠(Mercurial)或壁球(Git).我担心我不知道Bazaar的通常术语是什么.
在Mercurial中,您可以使用histedit扩展(自Mercurial 2.3以来的捆绑扩展)将一系列变更集折叠到单个变更集中.它提供了第三方折叠扩展中功能的超集.
该底垫延伸部(另一个标准扩展)具有与所述相同的功能--collapse
标记.你完全正确的做法是通常进行变基以避免不必要的合并,但它在某种程度上也必须用于在Git中折叠(和编辑)变更集.Mercurial 的hetedit扩展模仿了Git中的交互式rebase命令.
一些集市选择.
如果你想摆脱几十个本地提交,你实际上是在抛弃历史.一种方法是使用bzr uncommit
命令.例如.
bzr uncommit -rbranch:https://url_to_mainrepo
Run Code Online (Sandbox Code Playgroud)
(在你完成主要回购的修订之前,请先离开它们.不要担心它会告诉你将要做什么并在做之前与你确认)
然后你可以做一个新的提交,其他所有其他合并为一个.
Bazaar通常隐藏合并修订.将您的小提交汇总到合并修订版的一种方法是保留主仓库的本地分支/结账.然后,当您准备就绪时,bzr merge
在您对本地main-repo-clone的更改中,然后提交合并的修订版.
通过这种方式,您仍可保留所有历史记录,但所有小修订都会整齐地汇总到合并修订版中.然后,您可以在需要时查看历史记录.
以下是如何查看合并修订的示例:
$ bzr log
------------------------------------------------------------
revno: 2 [merge]
message:
summary of the things I did
------------------------------------------------------------
revno: 1
message:
some change on the mainline
------------------------------------------------------------
Use --include-merged or -n0 to see merged revisions.
Run Code Online (Sandbox Code Playgroud)
以下是如何查看合并修订的示例:
$ bzr log -n0
------------------------------------------------------------
revno: 2 [merge]
message:
summary of the things I did
------------------------------------------------------------
revno: 1.1.2
message:
my first step
------------------------------------------------------------
revno: 1.1.1
message:
my second step
------------------------------------------------------------
revno: 1
message:
some change on the mainline
Run Code Online (Sandbox Code Playgroud)