2010-09-18 50 views
2

使用Maven在NetBeans中进行开发由于事物不再有效(TDD?),我经常保持恢复到本地历史记录和svn代码。除了在每次成功构建/测试之后提交'测试新想法X'分支之外,我还可以如何配置Maven在每个构建中自动执行此操作?是否有我可以恢复到上次构建/测试成功的代码?

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

编辑:所以问题是:我怎么能有一个自动提交每次Maven构建成功,使我可以恢复到它?最好与mercurial。

回答

0

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

hg tag --local --force last_successful_build 

只要确定构建脚本的最后一行,您就可以做到。 --local使其成为永不进入历史记录和/或被推动的标签,并且--force如果它已经存在则将其向前移动。同样的事情可以在git中使用稍微不同的命令行。

1

(...)是否有我如何配置Maven恢复到上次构建/测试成功的代码?

Maven没有跟踪更改,这不是它的目的。使用您的VCS并在开发分支中进行小的工作更改是IMO的最佳选择。

+0

你不觉得如果提交'code-that-builds'分支(在分支/ trunk下),每次发生分支时都会有用吗?这比手动执行更好,因为它花费的时间更少,不易出错(遗忘,并在实际测试不起作用时提交)。由于可以自定义操作来与svn交互(如mvn deploy),我认为这可以实现(并且有人认为它已经很有用)。 – simpatico 2010-09-19 05:42:57

+0

@simpatico我只是说这不是Maven的目的。就我个人而言,我不希望Maven恢复更改,因为构建未通过。我更喜欢用另一种方式:在运行构建之前提交**或**在提交时运行构建,如果构建失败,则拒绝提交,如果您使用的是支持该构建的CI引擎。 [团队城市](http://stackoverflow.com/questions/500944/build-on-commit-with-subversion/501065#501065)。 – 2010-09-19 21:02:20

+0

我可以在每次成功构建时都有maven commit吗?如果它提交给“自动提交”分支,或者带有“自动提交”注释,那对我来说是这样。顺便说一句,我使用mercurial – simpatico 2011-08-21 05:10:10

0

Git有一个本地历史记录,可以用于时间点备份/恢复,因此您可以使用locale将源代码管理与实验混淆起来。像这样的东西也是svn路线图上的某个地方。

0

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

我建议的唯一改动是当你需要回滚点时使用.patch文件,如果你想实验。所以如果我已经有了本地mod,并且我不知道下一步该做什么才能做出承诺(我还有很多测试)。我将创建一个.patch文件作为我所处位置的快照。然后我可以根据需要自由地进行试验,当一切出错时,我简单地恢复一切,然后重新应用我的补丁。这是将git设置为本地VCS回购的替代方法。

这可能会帮助你,但不能替代小型增量工作。尽可能经常地提交,以避免首先陷入这种情况。

+0

是否有我可以在每次成功构建自动化提交? – simpatico 2012-05-28 13:52:58

+0

我们使用TeamCity的IntelliJ IDEA作为我们的CI服务器。有一个IDEA TeamCity插件允许您运行使用TeamCity构建配置在本地运行CI作业的“本地”构建。有一种选择可以在采用这种方法时自动承诺成功。至于其他IDE/CI服务器,您可能需要提出自己的自动化解决方案。可能使用自定义脚本? – 2012-05-28 14:15:27

相关问题