Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
Svn 有没有办法恢复到上次成功构建/测试的代码?_Svn_Netbeans_Maven 2_Mercurial_Tdd - Fatal编程技术网

Svn 有没有办法恢复到上次成功构建/测试的代码?

Svn 有没有办法恢复到上次成功构建/测试的代码?,svn,netbeans,maven-2,mercurial,tdd,Svn,Netbeans,Maven 2,Mercurial,Tdd,在使用Maven在NetBeans中开发时,我经常会在事情不再正常(TDD?)时返回到本地历史和svn代码。除了在每次成功构建/测试后提交“testing new idea X”分支之外,我还有什么方法可以配置Maven在每次构建时自动执行该操作 是否有其他人遇到同样的问题,并以不同的方式处理 编辑:所以问题是:如何在每次maven构建成功时自动提交,以便我可以恢复到它?最好是使用mercurial。听起来您使用SVN做得不错。毕竟,这就是源代码管理的目的 您可能希望将其视为subversion

在使用Maven在NetBeans中开发时,我经常会在事情不再正常(TDD?)时返回到本地历史和svn代码。除了在每次成功构建/测试后提交“testing new idea X”分支之外,我还有什么方法可以配置Maven在每次构建时自动执行该操作

是否有其他人遇到同样的问题,并以不同的方式处理


编辑:所以问题是:如何在每次maven构建成功时自动提交,以便我可以恢复到它?最好是使用mercurial。

听起来您使用SVN做得不错。毕竟,这就是源代码管理的目的

您可能希望将其视为subversion的替代方案(或),因为这可能会加快您的速度,并允许您保持SVN历史的整洁

如果你会开车,你可能想看看它的

(…)我如何配置Maven以恢复到上次成功构建/测试的代码


Maven不跟踪变化,这不是它的目的。使用您的VCS并在开发分支中提交小的工作更改是一种可行的方法。

Git有一个本地历史记录,您可以将其用于时间点备份/恢复,因此您可以在本地撤消操作,而不会使源代码控制与实验变得混乱。svn的路线图上也有类似的内容。

听起来你已经在用最好的方式做了;如果构建失败,使用SVN和IDE回滚更改。我完全支持Pascal的建议,他说您应该在提交之前进行本地构建,然后使用CI工具确保您的VCS代码库始终通过构建/测试

我建议的唯一修改是在需要回滚点时使用.patch文件,如果您想进行实验的话。因此,如果我已经有了本地mod,并且我不确定下一步要做什么才能提交(我仍然有中断测试);我将创建一个.patch文件作为我所在位置的快照。然后,我可以根据需要自由地进行实验,当一切都出错时,我只需恢复一切,然后重新应用我的补丁。这是将git设置为本地VCS回购的替代方案


这可能会帮助你,但没有什么可以替代小的、增量的工作。尽可能多地提交,以避免一开始就陷入这种情况。

比成功提交更好的方法是向前移动标签。在Mercurial中,您只需执行以下操作:

hg tag --local --force last_successful_build

只要把它作为构建脚本的最后一行,就可以了。
--local
使其成为一个永远不会进入历史记录和/或被按下的标记,
--force
将其向前移动(如果它已经存在)。同样的事情在git中也可以使用稍微不同的命令行。

如果对“构建代码”分支(在分支/主干下)进行提交,您不认为这会很有用吗?这比手动执行要好,因为它花费的时间更少,更不容易出错(忘记,并在测试实际不起作用时提交)。由于可以定制操作以与svn交互(如mvn部署),我认为这是可以实现的(有人认为它已经很有用)。@simpatico我只是说这不是Maven的目的。就个人而言,我不希望Maven恢复更改,因为构建没有通过。我更喜欢另一种方式:在提交之前运行构建,或者在提交之后运行构建,如果构建失败,则拒绝提交,如果您使用的是支持此功能的CI引擎。我可以在每次成功构建时/之后让maven提交吗?如果它提交到一个“自动提交”分支,或者带有注释“自动提交”,那么对我来说就是这样。顺便说一句,我在那里使用mercurialis如何在每次成功构建时自动提交?我们使用IntelliJ IDEA和TeamCity作为CI服务器。有一个IDEA TeamCity插件,允许您运行“本地”构建,该构建使用TeamCity构建配置在您的计算机上本地运行CI作业。使用此方法,有一个在成功时自动提交的选项。对于其他IDE/CI服务器,您可能必须提出自己的自动化解决方案。可能是自定义脚本?