获取无限的“撤消堆栈”而不提交到存储库?

就像许多程序员一样,我很容易定期发现“灵感”,在那里我将突然看到“光明”,并对我的代码进行大手术。 通常情况下,这种方法效果很好,但是有些时候我后来发现,由于缺乏睡眠/咖啡因,或者只是对问题的理解不完善,我做了一些非常愚蠢的事情。

发生这种情况时,下一步是扭转伤害。 最容易的是,这意味着在我的编辑器中撤消堆栈…除非我在某个时候closures了文件。 接下来是版本控制,但如果我在最近的提交(我习惯性地不提交破坏构build的代码)和灵感时刻之间进行更改,它们就会丢失。 它不在存储库中,所以代码从来不存在。

我想以这样的方式设置我的工作环境,我不需要担心这个,但是我从来没有想出一个完全令人满意的解决scheme。 理想的情况是:

  1. 每次保存文件时都会创build一个新的可恢复版本。
  2. 这些“自动保存”版本不会混淆主要的存储库。 (其中绝大多数是完全无用的,我每分钟击Ctrl-S几次)。
  3. “自动保存”版本必须驻留在本地,以便我可以快速浏览它们。 试图快速扫描数百个修订版本时,具有3秒钟周转时间的存储库不会执行此操作。

我考虑的选项:

  • 在做出重大更改之前,只需提交到主存储库即使代码可能被破坏。 缺点:当“受到启发”的时候,我一般不会在意这件事; 打破构build。
  • 一个启用了自动版本控制的本地托pipeSubversion版本库,作为“Web文件夹”装载。 缺点:与其他存储库的工作副本不兼容; 在Windows中安装正确的WebDAV文件夹是最好的。
  • 与前面的方法一样,但是在主存储库中使用分支,并且只要通常手动提交,就会合并到主干。 缺点:并非所有托pipe的存储库都可以启用自动版本控制; 不符合以上第二点和第三点; 不能安全地从树干反向合并到分支。
  • 切换到DVCS,并在推送时“组合”我所有的小提交。 缺点:我不了解DVCS的第一件事, 有时Subversion是唯一可用的工具; 我不知道如何达到上述第1点。
  • 在版本化的文件系统上存储工作副本。 缺点:这些是否存在Windows? 如果是这样,谷歌没有向我展示的方式。

有谁知道一个工具或组合工具,可以让我得到我想要的? 还是我有自相矛盾的要求? (我强烈怀疑)

更新:经过更仔细的检查我已经使用 (叹气)的工具,事实certificate,我的文本编辑器有一个非常好的多备份function,几乎可以完美地满足我的需求。 它不仅可以将所有备份存储在“隐藏”文件夹中(可以将其添加到VCS的全局忽略),而且允许在编辑器中直接浏览甚至与备份进行比较。

问题解决了。 感谢您的build议,乡亲们!

大多数编辑器在保存到备份文件之前存储文件的最新版本。 您可以自定义该过程以附加修订版号而不是正常的代字号。 每次保存时,都会有一份文件的副本。 如果这会占用太多的磁盘空间,您可以选择为每个更改创建差异,并自定义您的编辑器以顺序应用修补程序,直到找到所需的修订。

分布式版本控制。 (mercurial,git等…)

故事的要点是没有签出,只有存储库的克隆。

只有在您将提交回主分支之前,您的提交才可见。

想做激进的实验改变? 克隆存储库,在您的计算机上执行大量提交。 如果解决了,推回去; 如果没有,那么只是回滚或垃圾回购。

如果您使用Windows Vista 7或Windows server 2003或更高版本,则可以使用卷影复制。 基本上,您的文件的属性窗口将有一个新的选项卡“以前的版本”,跟踪文件的以前的版本。

该服务应该自动生成快照,但为了安全起见,您可以在“灵感”之后立即运行以下命令:

'vssadmin create shadow /for=c:\My Project\' 

它屡次救了我的屁股。

卷影复制

我认为是切换编辑的时候了。 Emacs有一个变量版本控制,它决定了Emacs在保存文件时是否会自动创建多个备份,命名为foo。〜1〜,foo。〜2〜等等。其他变量决定保留多少备份拷贝。