Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用git组织项目_Git_Project Management_Projects And Solutions - Fatal编程技术网

用git组织项目

用git组织项目,git,project-management,projects-and-solutions,Git,Project Management,Projects And Solutions,我有一个封闭源代码的项目(处理各种语言的文本),我想通过上传到bitbucket来开源。但我不确定该如何/是否将其拆分为子项目 目前整个项目作为一个大结构在svn中: 主系统(java中的一组工具) ant插件(需要特定版本的系统;ant是一个构建系统,我们使用它来加载语言资源、构建和测试它) 文档(如何运行、开发资源等) 语言资源1 : 语言资源 语言资源可能有不同的许可证,并且可能由第三方提供 我想知道:我应该把这个项目放在一起(只删除具有更严格许可证的语言资源),还是应该把它拆分成单个

我有一个封闭源代码的项目(处理各种语言的文本),我想通过上传到bitbucket来开源。但我不确定该如何/是否将其拆分为子项目

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

  • 主系统(java中的一组工具)
  • ant插件(需要特定版本的系统;ant是一个构建系统,我们使用它来加载语言资源、构建和测试它)
  • 文档(如何运行、开发资源等)
  • 语言资源1
  • :
  • 语言资源
语言资源可能有不同的许可证,并且可能由第三方提供

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

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


感谢您的建议

请您代替程序的用户:

  • 我需要下载项目的所有部分才能运行它吗
  • 在更新的情况下,我是否应该更新所有部件以使其工作
  • 是否不可能单独使用项目的某一部分
如果以上任何问题的答案为“是”,则将所有部分保留在单个项目中。基本上,如果您需要所有部件一起工作,那么创建单独的项目是没有意义的,因为最终用户必须获取/更新所有部件

如果所有这些问题的答案都是“否”,那么项目的各个部分在逻辑上具有一定的独立性,在这种情况下,只获取和使用其中的一部分是有意义的,而不必担心其他部分。在这种情况下,让它们成为多个项目。同样,每个项目将包含非常依赖的部分(要么全部获得,要么什么都没有)

不管这些,一定要将文档与源代码一起保存。您不希望版本与此不匹配。我不知道什么是“ant”东西,但如果它们也非常依赖于版本,请将它们保留在与主系统相同的项目中


根据您的更新,我建议将带有ants和文档的主系统放在一个项目中,并将脚本放在另一个项目中。由于您将“语言资源X”称为脚本,因此我认为它们相当小。这样,即使用户只需要其中一个项目,也可以将它们全部放在一个项目中


但是,如果“语言资源X”本身是一个大项目,那么将它们放在单独的项目中是有意义的。

至于“保持版本同步”,您应该查看Git中的子模块。我不知道他们是否能解决这个问题,但是对于这种模块化的工作,你应该大体上了解他们。对不起,我所说的脚本是指ant的东西(插件)加上次要的脚本。我改正了。lg资源不是微不足道的(一个词典、频繁的表单、变形范例、一些表、配置等),所以我认为它们应该是独立的项目。但它们取决于系统的特定版本,是应该通过自述文件指定的内容,还是有更正式的方式?(比方说,提交法语资源需要这个存储库中的2.1版本的系统)。@Jirka-x1,我不知道java世界是如何管理它的。如果您的构建工具允许(例如haskell的cabal允许),您可以指定仅针对特定版本进行构建。如果没有适合您的工具,您可以随时手动执行。也就是说,在头文件(同样,使用Java的等效文件)和语言资源中公开主程序的版本,在开始时检查主版本。如果不兼容,失败时会有一条很好的消息告诉他们更新。如前所述,将它们保存在git子模块中将极大地帮助用户进行更新。有些人反对使用子模块,因此您可能还想查看
git子树
(需要启用贡献的git的新版本)。