自动版本化本地备份的源

时间:2014-12-03 10:33:35

标签: git mercurial versioning

使用版本控制系统时,人们常常想要制作“清洁”系统。提交,即实际有意义的提交,并且是可编译的(并且很适合其他开发人员阅读)。

作为一种自然的效果,提交通常很晚('当它工作时#39;)。

它减轻了版本控制的一个好处:能够恢复到以前使用的状态'而你没有愤怒的地方删除了一大堆尚未提交的代码。

Eclipse有一个内置函数(本地历史记录),但它依赖于IDE。

是否有与流行的VCS(git,mercurial ...)之一有任何类似的机制,可能作为扩展/插件?

理想情况下,它不会干扰主要提交历史记录,但会维持未提交更改的并行历史记录。

如果这样的事情不存在,我可能会想写一个。

澄清: 我非常了解本地分支机构+ rebase或者hetedit,但我要求提供一个自动且易于设置的解决方案。如果我必须经常提交,我可能会忘记/懒得做,特别是如果它意味着稍后手动清理(rebase部分),对于每个真正的提交。 主要目标是为开发人员提供一个安全网,人们通常会意识到他们只是在他们已经摔倒时才需要网...

3 个答案:

答案 0 :(得分:3)

我不知道有任何工具可以做到这一点,但你可以使用Git来做到这一点。

创建一个本地分支并对其进行处理(经常提交,还原等)。 一旦您对工作感到满意,就可以使用git rebase -i将所有小型提交压缩到一个(或多个)大型提交中。

答案 1 :(得分:0)

你可以(在Mercurial,f.e中):

  • WIP-commits的分支,在其中您提交脏工作并仅在一些“稳定点”之后将此分支合并到主线中,并且只有这些合并集应该是其他人感兴趣的(使用{{ 1}}而不是默认的“全部推送”,你不会发布任何未完成的作品)
  • MQ extension(或Shelve extension),其中队列中的补丁程序集是您当前的工作(并且它们未被共享|发布),抛光的补丁转换为永久变更集并成为(可推的)历史的一部分

答案 2 :(得分:0)

在mercurial中,我这样做的方法是将“hg commit --amend”与evolve扩展结合使用。

通常,(假设您当前的修订版是头部变更集)“commit --amend”将修改您当前的父变更集。因此,您可以在每个点确定您有值得保存的东西。这可以保持历史清洁。

当与evolve extension一起使用时,“commit --amend”会将之前的提交保留为隐藏的变更集。使用“hg log -hidden”(以及按下右键时的乌龟)可以看到这些隐藏的变化。因此,您可以返回并查看所有部分工作,但不会推送隐藏的更改集。

PS。不要过分担心进化扩展的“实验”状态。它经过了充分的测试。