用git组织一个项目

时间:2013-10-31 15:03:16

标签: git project-management projects-and-solutions

我有一个闭源项目(处理各种语言的文本)我想开源,可能是将它上传到bitbucket。但我不确定如何将其拆分为子项目。

目前整个项目在svn中是一个大结构:

  • 主系统(java中的一组工具)
  • ant plugins(需要特定版本的系统; ant是一个构建系统,我们用它来加载语言资源,构建并测试它)。
  • 文档(如何运行,开发资源,......)
  • 语言资源1
  • 语言资源n

语言资源可能具有不同的许可证,可能由第三方提供。

我想知道:我应该将这个项目放在一起(只删除具有更严格许可的语言资源),还是应该将其拆分为单个项目。后者似乎更像是要做的事情,但我如何保持版本同步?只需手动,使用自述文件?

(更多细节基于以下答案:) 通常,用户会下载系统,ant插件和一种语言资源。他们需要相互兼容。但有时他会在没有脚本的情况下下载它(如果他没有做任何实验但是将它集成到生产系统中)。有时,另一方面,他们可能希望用它下载多个甚至所有资源。

感谢您的任何建议

1 个答案:

答案 0 :(得分:3)

让自己取代程序用户:

  • 我是否需要下载项目的所有部分才能运行它?
  • 如果有更新,我应该更新所有部件吗?
  • 单独使用项目的某个部分是不可能的吗?

如果上述任何问题的答案为“是”,则将所有部分保留在一个项目中。基本上,如果你需要所有部件一起工作,那么制作单独的项目是没有意义的,因为最终用户必须得到/更新所有部分。

如果他们所有人的答案都是“不”,那么项目的各个部分就具有一定的逻辑独立性,只需获取和使用部分内容就行了,而不必费心去完成剩下的工作。在这种情况下,让他们多个项目。同样,每个项目都将包含非常依赖的部分(要么全部都应该得到或者什么都没有)。

无论如何,执行将文档保留在源代码中。您不希望版本与此版本不匹配。我不知道“蚂蚁”的内容是什么,但如果它们也非常依赖于版本,请将它们保存在与主系统相同的项目中。


根据您的更新,我建议将主系统与蚂蚁和文档放在一个项目中,并将脚本放在另一个项目中。由于您将“语言资源X”称为脚本,我认为它们非常小。即使用户只想要其中一个项目,也可以让所有人都在一个项目中。

但是,如果“语言资源X”本身就是一个大项目,那么将它们保存在不同的项目中是有意义的。