我们在每个Git仓库都有前端项目和后端项目,并分享一些功能/类,怎么样?

时间:2015-08-11 06:40:03

标签: git

在2 Git repos之间共享元素的最佳方法是什么?

说,我有一个用JavaScript编写的AngularJS前端项目。现在我们有一个用Node.js编写的后端。当然,这可以是任何语言和任何其他用例。说一个Spring Java项目。和另一个类似的Spring Java项目。两者共享您编写的实用程序库。放在哪里,轻松分享?一些实用程序函数仅在两个项目中使用。

在SVN中,这非常简单。你在大回购上创建。你想要项目a?好吧,你只需要检查该文件夹加上说项目/文件夹global。随意开始编码。

那么Git呢?我们退后一步了吗?

I read about submodules and sub trees, and they look complex. They seem to lead to a lot of trouble.特别是当你不习惯这个时。

next reference for trouble

我确信这个问题已经解决了数千次。我只是想知道如何?

3 个答案:

答案 0 :(得分:2)

分离这些的正确方法如下:

  • 将所有共享类(或代码)移动到第三个项目中。为它创建一个Git仓库。
  • 独立于其他项目开发此共享项目,准备好时标记,创建发布等等。
  • 使用依赖关系管理工具将共享库包含在其他两个项目中。

适合此的依赖管理工具:

  • Maven for Java projects / libraries(pom.xml
  • npm for Node.js projects / libraries(package.json
  • Bower for frontend JS项目/图书馆(bower.json

尽量避免使用Git子模块,它们很复杂,管理起来也很麻烦。使用上述依赖管理工具之一,使用您的共享代码就像使用任何其他第三方库(Spring,Angular,Express,...)

如果要在本地将开发项目链接在一起,以便可以处理共享代码而无需提交/发布/更新库以显示更改,则可以使用link功能Bower和npm。有关这些问题的详细解答,请参阅以下问题:

答案 1 :(得分:0)

你可以使用Maven来实现这个目的,我在我的应用程序中应用了相同的逻辑。如下图所示。

com.org.abc (maven - group - id)
com.abc.util (common-util -- maven - artifact-id)

我的util项目是com.org.abc的子项目。

现在让我们假设,我需要将util项目用于另一个项目。

com.org.xyz 

现在您只需要在com.org.xyz pom.xml文件中添加依赖项com.abc.util jar。

Maven是项目管理工具,用于此目的。请参阅本教程

maven tutorial

答案 2 :(得分:0)

在命名git存储库时,您可以查看以下有用的准则

  • 使用lowercasekebab-case作为存储库名称
  • 存储库名称应由三部分组成:<project>-<platform>-<module><module>部分是可选的,而<platform>部分是其中之一: android ios 后端前端 rn unity -存储库名称应由三部分组成:<project>-<platform>-<module><module>部分是可选的,而<platform>部分是以下之一: android ios 后端前端 rn 统一
  • 存储库名称示例:surge-androidsurge-iossurge-backend-apisurge-frontend-adminsurge-rn-存储库名称示例:surge-android,{ {1}},surge-iossurge-backend-apisurge-frontend-admin
  • 如果项目名称由多个单词组成,请使用破折号作为分隔符,例如surge-rn-如果项目名称由多个单词组成,请使用破折号作为分隔符,例如rich-uncles-frontend
  • 如果项目有多个版本,请使用 v1 v2 后缀,例如rich-uncles-frontendfutupilot-backend-api-v1-如果项目有多个版本,请使用 v1 v2 后缀,例如futupilot-backend-api-v2futupilot-backend-api-v1
  • 如果将API,Web或RN混合在单个存储库中,请使用futupilot-backend-api-v2作为平台标识符,例如js-monorepo-如果将API,Web或RN混合在单个存储库中,请使用ordr-js-monorepo作为平台标识符,例如js-monorepo
  • 上面的相同规则适用于公共存储库-上面的相同规则适用于公共存储库
  • 每个项目必须具有正确的 .gitignore ,忽略临时文件和二进制文件-每个项目必须具有正确的 .gitignore ,忽略临时文件和二进制文件
  • 每个项目必须有一个 README.md 文件,其中包含有关如何构建和运行它的说明以及其他重要说明-每个项目都必须有一个 README.md 文件包含有关如何构建和运行它的说明和其他重要说明

参考
https://github.com/strvcom/strv-guidelines/blob/master/git.md