Windows 得到一个“无限的”;“撤消堆栈”;没有提交到存储库?

Windows 得到一个“无限的”;“撤消堆栈”;没有提交到存储库?,windows,version-control,Windows,Version Control,和许多程序员一样,我也经常会周期性地“灵感迸发”,在这种情况下,我会突然发现曙光,并对我的代码进行大手术。通常情况下,这样做效果很好,但有时我后来发现——由于缺乏睡眠/咖啡因,或者仅仅是对问题的不完全理解——我做了一些非常愚蠢的事情 当这种情况发生时,下一步是扭转损坏。最简单的是,这意味着我的编辑器中的撤销堆栈…除非我在某个时候关闭了文件。版本控制是下一步,但如果我在最近提交(我习惯性地不提交破坏构建的代码)和灵感时刻之间进行更改,它们就会丢失。它不在存储库中,因此代码不存在 我想以一种不必担心

和许多程序员一样,我也经常会周期性地“灵感迸发”,在这种情况下,我会突然发现曙光,并对我的代码进行大手术。通常情况下,这样做效果很好,但有时我后来发现——由于缺乏睡眠/咖啡因,或者仅仅是对问题的不完全理解——我做了一些非常愚蠢的事情

当这种情况发生时,下一步是扭转损坏。最简单的是,这意味着我的编辑器中的撤销堆栈…除非我在某个时候关闭了文件。版本控制是下一步,但如果我在最近提交(我习惯性地不提交破坏构建的代码)和灵感时刻之间进行更改,它们就会丢失。它不在存储库中,因此代码不存在

我想以一种不必担心的方式来设置我的工作环境,但我从来没有想出一个完全令人满意的解决方案。理想情况下:

  • 每次保存文件时都会创建一个新的可恢复版本
  • 那些“自动保存”的版本不会使主存储库混乱。(它们中的绝大多数是完全无用的;我每分钟按Ctrl-S几次。)
  • “自动保存”版本必须驻留在本地,以便我可以快速浏览它们。当试图快速扫描数百个修订版时,一个周转时间为3秒的存储库根本不行
  • 我考虑过的选择:

    • 在进行重大更改之前,只需提交到主存储库,即使代码可能会被破坏。缺点:当“受到启发”的时候,我通常没有意识到这一点;破坏了建筑
    • 本地托管的Subversion存储库,启用了自动版本控制,装载为“Web文件夹”。缺点:不能很好地处理其他存储库的工作副本;在Windows中安装正确的WebDAV文件夹充其量是痛苦的
    • 与前面的方法一样,但在主存储库中使用分支,并在通常手动提交时合并到主干。缺点:并非所有托管存储库都可以启用自动版本控制;不符合上述第2点和第3点;无法安全地从主干反向合并到分支
    • 切换到DVCS并在按下时“合并”我所有的小提交。缺点:我对DVCSE一无所知;有时,Subversion是唯一可用的工具;我不知道如何满足上面的第一点
    • 将工作副本存储在版本控制的文件系统上。缺点:Windows有这些吗?如果是这样的话,谷歌没有给我指明方向
    有人知道有什么工具或工具组合可以让我得到我想要的吗?还是我给自己设置了相互矛盾的要求?(我非常怀疑这一点。)

    更新:在仔细检查了我已经使用的工具(叹气)之后,发现我有一个非常好的多重备份功能,几乎完美地满足了我的需要。它不仅可以选择将所有备份存储在“隐藏”文件夹中(然后可以将其添加到VCSE的全局忽略中),还可以在编辑器中浏览甚至区分备份


    问题解决了。谢谢你们的建议,伙计们

    如果使用Windows Vista、7或Windows Server 2003或更新版本,则可以使用卷影复制。基本上,文件的属性窗口将有一个新选项卡“previous version”,用于跟踪文件的早期版本

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

    它已经勇敢地救了我好几次了


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

    我认为是时候切换编辑器了。Emacs有一个可变版本控制,它确定Emacs在保存文件时是否会自动为文件创建多个备份,并将其命名为foo.~1~、foo.~2~等。其他变量确定要保留的备份副本数。

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

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

    您的提交仅对您可见,直到您将其推回到主分支


    想做彻底的实验改变吗?克隆存储库,在计算机上进行大量提交。如果成功了,就把它推回去;如果没有,那么就回滚或废弃回购协议。

    这听起来可能效果不错。很遗憾我还在使用XP。也许下周我应该开始看Windows7.it RTMs了!否则,请尝试一下RC。这是一个伟大的OSHmm…我的编辑器实际上有一个内置的多备份系统,就像这样,我根本没有考虑过。嗯,是我。不过,它看起来像是一个全局设置,对于非编码的使用,它可能会让人恼火。另一方面,我可能会发现我喜欢所有东西都有备份。我一定要给这一个做一个测试。以Hg为例(因为它受到谷歌代码的支持,我经常使用谷歌代码),如果我做一个bajillion本地“自动提交”,那么当我推到主分支时,我能把它们滚到一个变更集中吗?或者,浏览存储库的每个人都可以看到对几个字符的每一次旋转吗?是的,您的提交(hg commit)将在您将它们推回存储库后对浏览存储库的每个人都可见。重复的保存将不起作用。如果您为次要字符保存,并为每个工作增量提交,您应该不会受到禁运。有些事情告诉我,这可能是可以避免的,我只是从来没有做过自己。只是注意
    'vssadmin create shadow /for=c:\My Project\'