-
22-08-2019 - |
题
我还没有看到连续的版本控制系统 - 当您开发代码时可以保存更改,而不是等待正式的签入。当然,这些更改将保存为“未入住”,但它们会保存为在您实际进行官方签到之前,可以将其保存以备份,并由其他人查看。
我还没有看到这个,想知道它是否存在,以及它可能或可能不是一个好主意的原因。
现在,程序员认为源代码控制是集成代码数据包,但是为什么不使这些数据包更小并连续集成呢?
-亚当
解决方案
现在,程序员认为源代码控制是集成代码数据包,但是为什么不使这些数据包更小并连续集成呢?
我想说的是DVC基本上已经在做到这一点,不是因为它们是分散的,而是因为提交要快得多。.使用Git,我比使用SVN更频繁地承诺。它也使提交“块”或“特定”或者更容易代码(使用 git add -i
或者 git gui
),通常更专注于跟踪代码行,而不是完整的文件(作为“传统” VCS'喜欢颠覆)
另外,git固有的工作方式意味着,正如您所说,“更改将被保存为'当然没有检查”。.当您提交时,更改是局部的,然后将它们推到远程计算机上,然后将它们推到远程机器上命令..您每次保存时都可以提交,然后如果您希望将它们重新置于单个提交中。
至于执行“连续版本控制”的工具,您可以简单地使用shell脚本来完成此操作。
while [ 1 ]; do
git add -a && git commit -m "Autocommit at $(date)";
sleep 10;
done
CACM]观看特定目录,并将所有更改用于独立的GIT存储库。
只使用:
cacm --repo dir_of_git_repo --watch dir_to_watch
我不确定您为什么要这样做。.我发现使用VCS最有用的事情之一是我更改的差异(自上次提交以来)。似乎有恒定/自动化的提交只是噪音。
其他提示
恒定自动保存的工作不是版本系统的任务,而是编辑器的任务。当您在版本系统中看到新版本时,它应该代表其他版本的有意义的更改,而不是每个半个单词。
Eclipse具有称为“本地历史”的功能,可以正是这样做的。它将在保存之间保留您的源文件的副本。它甚至为您跟踪已删除的文件夹。它多次节省了我的屁股。您可以将本地历史记录视为仅在本地计算机上发生的低级版本控制。当然,当您在另一台机器上工作时,您的本地历史将不同。
我已经看到了一些针对各种DVC的插入插件,但是这些插件只能很聪明。确实,理想的事情是将存储库存储在复制的文件系统上,以便将这些频繁的粒状(和不可变)版本保存在DVC之外。
就像其他人所说的那样,我更喜欢做出许多小承诺。使用DVC,您不必担心打破行李箱或主分支,只有在完成后才推动。.在编辑文件时不用担心有毒的修订。
在Linux上,我使用 ext3cow 存储我的HG/GIT存储库。这给了我您描述的那种功能。可悲的是,我不知道像Linux之外的可移植物一样。也许一些疯狂的团队会在Python提出一支。
这个问题之前已经出现了几次(尽管每个情况都在不同的上下文中),因此肯定需要对Ext3Cow(但便携式)之类的东西很明显。但是,我不希望DVC本身,尤其是在巨大的树木上。
我认为您确实需要从文件系统而不是DVC询问此问题。
你不想入住 每一个 改变。您想签入可以一起工作的原子集更改。您不想将参数添加到方法并保存,然后将其签入(和CI构建运行),然后进行构建中断,因为您尚未更新对该方法的调用。
你的意思是像 颠覆自动化?
免责声明:我并不是说自动化是开发的好主意,或者我个人会这样做,但是该技术存在。
如果需要,您可以提交所有行,或具有dvcs之类的DVC的角色。通常,我认为在使用DVC时,最好经常提交,以便轻松地使用GIT Fienect等工具来寻找问题。如果您想要所描述的效果,则可以脚本脚本您选择的编辑器以在每一个保存上提交……在实践中,我认为这会有点多。
有些人会为此目的设立开发部门,并让开发人员在将其合并为质量保证级分支之前进行更改。您甚至可以让开发人员在自己的分支机构中进行重大更改工作,然后再将这些更改合并到主要开发部门。因此,分支可以解决这个问题。
我认为Eclipse会做或过去在每次保存中做这样的事情。当我的代码最终在试图识别错误时被黑客入侵时,它为我节省了几次。
这是一种不同的方法。几乎每天,我都会遇到某些事情停止工作的情况,而我不知道为什么。我倒带几分钟,检查已经进行了哪些更改以及要进行了哪些文件。因此,我同意对Continouos版本控制的需求。
同时,您不想每天都要检查成千上万的小更改。
好的,这就是您要做的。您两者都使用,但不要混合它们。整个团队应使用您的源控件,并且您时不时地进行检查。同时,您运行了一些本地个人文件版本软件,这些软件可以节省所有小更改,并可以轻松地实际使用该信息。
而已。我用 历史探索者 由于我帮助开发了它,但是还有其他人。
您可能对JetBrains开发的连续版本控制系统感兴趣。它尚未公开,但我在马尔莫(Malmo)的Jetbrainsday的主题演讲中展示了它的一些功能: http://new.livestream.com/jetbrains/jetbrainsday1/videos/29348962
在Java拥有几年的编程经验,我仍然记得(怀旧)视觉时代为开发过程带来了新的方法。视觉年龄具有非文件源代码的方法。代码存储在关系数据库中。您通常会在显示单个方法的视图上工作。您还拥有完整的文件视图,但是您不会使用太多。
关于版本控制,它将在每个保存中生成一个版本。您可以明确检查使用版本号/名称的方法,类/接口,软件包或整个项目。它还允许在方法级别上对您的来源进行更细的粒度控制。一旦我开始使用Eclipse,虽然它从视觉时代继承了许多功能,而如今拥有历史功能,可以节省您代码的本地“保存”,但我不禁感到自己退后一步。
Vesta怎么样?