我想将Java项目作为开源发布,但我不确定正确的平台和版本控制系统。
需要考虑三个因素:
目前我正在使用 SVN ,我计划迁移到 GIT 。但也有其他可能性,如 Mercurial 或 Bazaar 。 GIT和Mercurial似乎非常相似,我还不了解这两者的专业和概念。此外,我想知道是否还有其他好的选择。
目前,我使用 Maven 来管理Java库依赖项并执行发布。还有其他工具,如 Hudson 或 Apache Ivy 等等。他们应该能够处理库依赖项,并能够包含当前发布的版本。部署自动化也是一个优势。
目前我使用自己的服务器来托管我的SVN代码和Maven版本。那里有很多托管解决方案,我认为如果他们感兴趣的话,其中一个很容易让人们加入我的项目。
我听到或使用的一些平台例如 Github , Bitbucket , Google Code 或 Sourceforge 。他们应该能够轻松集成对所选版本控制和项目管理软件的支持。像bugtracker和wiki这样的开发人员的其他东西也很好,需要被认为是有用的。
那么,您会推荐哪种组合?我想收集所有信息并创建一个概述,以便人们可以自己决定哪种设置最符合他们的需求。
答案 0 :(得分:4)
Google Code目前是免费的,并提供源代码管理(your choice of subversion, mercurial, or git),包括命令行集成,问题跟踪和维基。我不打赌它会永远免费关闭项目,但我怀疑它始终是开源的。
GitHub对于开源项目是免费的,并提供非常强大的Web工具以及命令行git
集成。还有问题跟踪,维基,拉请求等
Bitbucket是一个类似的网站,也适用于开源项目,与Mercurial完全相同。还有问题跟踪,维基,拉请求等
这是社区Wiki的答案,因为要求“最佳”的问题最好由维基式回复提供。您可以随意编辑此答案以添加视图。
答案 1 :(得分:2)
以下是我们正在使用的内容,并且非常满意:
唯一的抱怨是Github会限制你用git做什么。你必须习惯拉动请求机制。
关于拉请求限制:
在git中,您通常希望拥有一个工作流程,人们可以在其中提交某种开发分支,然后,在某人批准更改后,它会合并到一个稳定的分支中。可以使用任意数量的组合和工作流程,每个组合和工作流程都是他自己的。
麻烦的是,如果你想限制人们可以提交的分支,你必须编辑github的git存储库上的更新钩子。这在github中是不可能的(只允许提交后挂钩)。 Github只允许通过协作者列表对整个存储库进行全部或全部提交权限,但不允许分支特定权限。
要解决这个问题,协作者必须将使用stable分支的存储库克隆到开发 repo 中,并且只要他们有可以进入稳定状态的东西,他们就必须发送一个拉请求。在此之后,使用稳定分支控制存储库的任何人都将从“开发回购”中撤出。换句话说,您需要将一些git分支功能放入分支。这意味着开发团队无法在回购中共享分支。
然而,对于具有许多个人贡献者的项目而言,这种限制并不算太糟糕。当你有多个贡献团队时,它会变得有点棘手,因为他们需要每个都有一个存储库。
但是,嘿,还要考虑让你的项目在github提供的可见性,因为这是吸引开发人员的一大优势!
答案 2 :(得分:1)
如果您想在工具和工作流程中选择真正的自由, 可以在Assembla查看(托管或运行自己的实例)