java - 管理分支机构中的不同客户代码

标签 java git version-control bitbucket

我是 git 的新手,这可能是一个答案很明显的问题:

所以我有一个项目/框架,我正在使用它来管理一堆自动化测试用例。所以文件夹代码结构如下。

Java
|-Package1
    |-Common code
    |-tests
        |- Client1 tests
        |- Client2 tests
        |
        |
        |- ClientN tests

是否建议在不同的分支中维护客户特定的代码?还是复制项目并为每个客户维护不同的 repo 协议(protocol)更好?基本上每个客户端都有使用 Selenium/TestNG 在同一核心之上编写的不同测试。

最佳答案

这两种选择都是可能的,但我认为这里更多的是可维护性问题。在这种情况下,我会采用单独的 repo 方法,但还有一个额外的方法:git submodules

选择这种方法有两个原因:

  • 维护独立分支的复杂性。每个客户都有一个开发工作流程。这意味着当您想从现有客户端分支向您的一个客户端添加新功能并且事情变得困惑时,您可能不得不分支。在某些时候,您可能会开始混淆分支;
  • 第二个原因是跟上通用代码;如果您的客户位于不同的分支机构,您如何跟上通用代码更新?定期 merge/ rebase ...?从长远来看,与使用单独的 git 存储库相比,开销要多得多。

使用单独的 repos/submodule 方法你会得到这样的东西:

Common Code Repo ( referred to as CCR )

Client 1 Repo has CCR as submodule
Client 2 Repo has CCR as submodule
...
Client N Repo has CCR as submodule

像这样,一切都是独立管理的,每个项目都可以有自己的流程,没有依赖性和杂乱的分支结构。

关于java - 管理分支机构中的不同客户代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56445150/

相关文章:

svn - 在家里和办公室开发,GIT 会比使用 xcopy 的 SVN 更容易吗?

php - Phinx 迁移 'up' 与 'change' 函数

git - 将当前树更新到 Git 的 HEAD

java - 匹配子字符串后替换字符串的所有后续字符

java - 如何使用 Java Access Bridge 自动化 Java Applet?

ruby - 如何在 @INC for Perl 中包含其他文件夹? (对于 svn2git,在 @INC` 中是 : `Can' t locate Git. pm)

git - 如何防止 git 中的非快进推送到选定的分支)?

Git:从版本控制中删除文件,但不删除它

java - Install4j - 卸载具有不同应用程序 ID 的旧应用程序

java - 线程调度器注册?