2010-09-18 47 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

相關問題