我正在用Java编写应用程序。我主要使用Eclipse,maven。如果只有一个人(我)现在在项目上工作,是否值得使用svn? Svn存储库/服务器应该在我的电脑上还是在互联网上?我应该看看还有哪些其他工具?哈德森,吉他?什么是哈德森? 在开发过程中使用哪些工具来使这个过程更加愉快和更专业。
答案 0 :(得分:5)
如果现在只有一个人(I)在项目上工作,是否值得使用svn?
是。 Svn或其他一些源代码存储库(git,mercurial,cvs等)可以帮助您保留您所做的更改的历史记录,并允许您在出现重大错误时将事物恢复到较早的状态。 (当然,如果你永远不会犯错误,并且永远记得你做了什么以及为什么......永远......版本控制是多余的。)
Svn存储库/服务器应该在我的电脑上还是在互联网上?
要么。如果在自己的计算机上实现存储库服务器,请确保定期执行备份。如果您使用远程存储库,请确保您保护自己免受存储库崩溃和丢失您的东西,或几天无法访问。
我应该看一下其他什么工具?哈德森,吉他?什么是哈德森?
Git是svn的替代品......
Hudson主要是一个连续构建系统。它通常用于自动运行构建和测试;例如每当你办理入住手续时。
在开发过程中使用哪些工具来使这个过程更加愉快和更专业。
Coberatura(在Hudson)的测试覆盖率工具。
样式检查器和错误检查程序,如CheckStyle,FindBugs,PMD等。
一台好咖啡机: - )
答案 1 :(得分:2)
是的,即使您是唯一的用户,我也说拥有版本控制很有用。一些优点是:
如果您正在使用家用计算机而没有其他人在版本控制系统中的项目上工作,我会说在您自己的计算机上进行设置。公司通常在其内部网中拥有(或至少应该拥有)自己的内部版本控制系统。
至于什么版本控制系统是“最好的”,我真的不能说。我只使用过CVS和SVN,从这两个我肯定会说SVN。我也听说过Mercurial和GIT的好消息,但是从未使用过。
至于其他工具,我不确定你是否需要任何工具(因为你已经在使用Maven)。我们有哈德森在工作,但我不知道如何设置(由其他人完成),虽然哈德森网站说这很容易。 Hudson监视版本控制系统(在我们的例子中是svn),并在注意到提交到svn中的新更改时自动构建项目。它运行maven-target并通过电子邮件向提交者报告任何测试失败。我认为也可以安排在某些时候进行构建并将项目部署到指定的位置,但不确定。对于一个开发人员项目,我认为设置Hudson可能有点过分。
编辑:作为事后的想法,如果你选择使用SVN,获得Subclipse(因为你正在使用Eclipse),它是一个SVN插件,可以轻松处理签出/提交/更新/恢复和查看历史记录,从Eclipse-IDE直接更改等。
答案 2 :(得分:1)
如果现在只有一个人(I)在项目上工作,是否值得使用svn?
SVN对于单身人士和小型企业来说已经足够了。是的,即使您是单个程序员,也应始终将代码置于版本控制之下。它允许您轻松地比较文件的早期版本,当您需要找到一次停止工作的原因时,这变得至关重要。
Svn存储库/服务器应该在我的电脑上还是在互联网上?
拥有一台单独的计算机的优点是,您的代码会自动备份,您可以从任何地方访问它,如果您的计算机死机,您可以继续使用另一台计算机。缺点是SVN在网络或互联网上可能非常慢。
我应该看一下其他什么工具?
你可以选择Mercurial。它允许您进行本地提交,这些提交存储为单独的版本,因此每个相关的更改都会单独记录。然后,您可以定期将其推送到服务器,在那里远程存储并更安全地存储。这实际上与Git(分布式)相同,但Mercurial似乎不那么全面。
在开发过程中使用哪些工具来使这个过程更加愉快和更专业。
咖啡机。 ;)
答案 3 :(得分:0)
如果只有一个,是否值得使用svn person(I)现在在项目上工作?
是的。另一种选择是拥有一堆.zip或.tgz,其中包含“last”,“working”,“test1”,“bad”等奇怪的名字,而不记得你做了什么以及为什么。请注意,如果项目不是微不足道的话,那么即使你在一段时间之后也会像其他人一样(即不记得你做了什么,为什么真的没有那么不同而不知道它。)
即使您是单个开发人员,您最终也可能会使用多台计算机(例如台式机和笔记本电脑,可能会有一些不同的操作系统用于检查便携性),版本控制系统将帮助您保持良好的状态。同步。
Svn存储库/服务器应该在我的电脑上还是在互联网上?
如果你使用分布式版本控制(例如git),那么远程是IMO最好的方法。 我正在使用带有ssh的Linux发行版的虚拟服务器,但也有专门的托管服务,仅用于存储库。
如果您不使用分布式版本控制系统(例如,您使用svn),那么如果存储库位于互联网上,事情会更加烦人。
如果您运行自己的存储库,那么您当然必须处理备份。