Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在编译期间保留git repo状态_Git_Unit Testing_Continuous Integration - Fatal编程技术网

在编译期间保留git repo状态

在编译期间保留git repo状态,git,unit-testing,continuous-integration,Git,Unit Testing,Continuous Integration,是否有一个众所周知的git工作流用于编译当前未提交的代码状态,以便在进行异步编译/部署/测试时可以继续编辑代码/数据 这就像(有效地!)隐藏,然后将所有当前的回购状态克隆到编译器实际运行的地方。如果编译或测试失败,您应该能够从当前编辑状态导航到生成作业失败的状态 可能有多个像这样的异步作业同时运行:(即:发布/调试)。持续集成服务器(如Jenkins、TeamCity或Travis CI)将为您执行所有管理和记账。您可以将其设置为编译每个提交,或者编译推送到某个中央Git存储库的每个存储库。不需

是否有一个众所周知的git工作流用于编译当前未提交的代码状态,以便在进行异步编译/部署/测试时可以继续编辑代码/数据

这就像(有效地!)隐藏,然后将所有当前的回购状态克隆到编译器实际运行的地方。如果编译或测试失败,您应该能够从当前编辑状态导航到生成作业失败的状态


可能有多个像这样的异步作业同时运行:(即:发布/调试)。

持续集成服务器(如Jenkins、TeamCity或Travis CI)将为您执行所有管理和记账。您可以将其设置为编译每个提交,或者编译推送到某个中央Git存储库的每个存储库。不需要复杂的隐藏等等——只需为开始的每个非平凡的事情打开一个功能分支,提交到该功能分支,并在所有测试成功时合并。

因此,您所说的是一个融合的~commitfs~表示文件系统在提交中的样子,这样您就可以
git stash-[uka]
并将其装载到某个地方?有根据的猜测是克隆——共享——单个分支的速度非常快,可能有人构建了这样的FS,没有检查。正确;除了构建周期克隆编辑器中的当前未提交状态。问题在于,在构建/部署/测试周期正在进行时,继续编辑代码是一种竞争条件。如果一个需要半小时的周期开始,您应该能够继续编辑代码,并在一个周期完成时收到通知。请注意,这也意味着并发创建的build Turd也是一个问题。因此,克隆一个隐藏。如果您想要相同的内容,
git stash-a;git克隆-s--共享/建立储藏室;git stash pop
是最容易实现的,直接使用管道可以获得更好的性能,获得相同的结果。(如果不是很明显,这是从键盘到编辑框,但我希望它基本上是正确的和可用的)构建在后台运行,在原子存储/克隆/存储操作之后运行,或者在构建运行时删除已完成的工作。在构建过程中,开发人员可能会自己进行隐藏。隐藏的优点是在被推回之前不会留下一堆乱七八糟的东西用“git rebase-i”清理。隐藏是不安全的,因为隐藏/克隆/隐藏可以在隐藏完成之前被杀死。所以,我采取了一种完全不同的方法,似乎效果很好:两个目录,src和turd。上面的重拍脚本都是“rsync-avzsrc/*turds;(cd-turds;scons&)”。这样可以确保src目录中没有构建turd,并且在后台编译一致的快照。这是因为除非rsync完成,否则它不会到达“scons&”。要优雅地处理重叠的构建,需要一些更巴洛克的东西。这是关于代码编辑器、编译器和测试套件之间的竞争条件。您不能因为正在进行长时间编译而停止编辑代码,并且您不希望每次键入“make”时都进行提交。我只是为此选择了rsyncing,它运行良好:即:如果我更改src:rsync src turds&&(cd turds&&scons&)下的许多git回购中的任何一个。问题是这些更改不应该提交,因为它们甚至还不知道是否可以编译。