测试不同客户端和服务器版本的最佳 Git 策略

2024-01-04

我希望能够为 Java 客户端/服务器运行集成测试(使用嵌入式 jetty)。此外,我希望能够在集成测试期间混合搭配不同的服务器和客户端源代码版本。

我想知道实现此目的的最佳 git 或 maven 版本策略是什么:

  1. 客户端和服务器使用相同的 git 存储库,很难签出不同服务器版本的代码并针对不同客户端版本的代码进行测试。

  2. 使用单独的 git 存储库(第一个存储库包含客户端 src 和集成测试,第二个存储库包含服务器 src) - 它还需要签出两个存储库才能运行集成测试,并假设它们之间的相对路径。

  3. 仅针对 maven 版本的服务器 WAR 测试客户端 src 代码,可能会导致开发人员针对与签出的服务器源代码不匹配的服务器 WAR 运行测试时犯无心错误。


我将指出第三个挑战:集成测试可能存在错误,因此您可能也希望独立控制测试版本。

我使用 git 的子模块功能来协调多个存储库。创建一个新存储库,其中将包含对客户端存储库和服务器存储库的引用。您也可以在此父存储库中放置基本测试驱动程序。

当新开发人员加入团队时,他们可以克隆此父存储库,然后运行git submodule update --init克隆客户端和服务器子模块。这样他们就可以像其他人一样设置相对路径。

但是,我不喜欢让客户端存储库假设服务器位于../server/。因此,我处理此问题的方法是让父存储库将任何所需的路径传递给子模块。例如,您可以有一个test.sh在运行的父存储库中

make -C client SERVER_PATH=$(pwd)/server test

对于您的情况,您还可以将所有测试代码放在父存储库中。然后它可以安全地假定子模块的相对路径。

这种安排的一个有趣的附带好处是:您可以创建记录特定版本组合的 git 提交,因为当您在父存储库中提交时,会记录在子模块中签出的版本。您可以使用它为已通过测试的版本组合创建分支或标签集合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试不同客户端和服务器版本的最佳 Git 策略 的相关文章

随机推荐

  • 每个 React 类方法的“函数缺少返回类型”

    我的 Typescript 项目中有一个有状态的 React 组件 我使用 ESLint 来检查它 typescript eslint parser and typescript eslint eslint plugin 我已启用该规则 t
  • setup.py/setup.cfg 安装所有附加功能

    我在 setup cfg 中寻找 继承 其他附加功能的可能性 如下所示 options extras require all
  • .Net 的 Prolog 编译器

    任何人都可以推荐一个用于 Net 的 Prolog 编译器吗 我在网上搜索到的那些似乎已经好几年没有更新了 Thanks Shiraz 在这篇文章中他们推荐P http homepages inf ed ac uk stg research
  • AdRequest.Builder 无法解析为类型

    我正在将 AdMob 合并到我的应用程序中 我已按照开发人员页面中的步骤进行操作 然而 AdRequest Builder 带有红色下划线 它表示 AdRequest 无法解析为类型 and AdRequest Builder 无法解析为类
  • 程序如何在内存中运行以及操作系统处理内存的方式

    我不清楚进程执行时的内存管理 在运行时 Here is a diagram 我不清楚图像中的以下内容 1 该图像所指的堆栈是什么 2 什么是内存映射段 它指的是文件映射 3 堆与进程有什么关系 堆是仅在进程中处理还是堆是由操作系统内核维护的
  • $(位置).attr('href');不工作

    我不知道为什么 但我对这段代码有问题 横幅显示在每个页面上 尽管它指定了属性 location attr href 您可以帮助我吗 div div class bottom content a href http www cliente o
  • 可存储空数据声明

    我正在尝试为 C 库创建 Haskell 包装器 底层结构太复杂 无法表达为显式类型 而且除了在 C 函数之间传递之外 我实际上并不使用它们 所以我使用EmptyDataDecls让 GHC 帮我解决这个问题 我需要的是一个指向这些数据类型
  • 在 Matplotlib/Python 中更改极坐标图的轴选项

    我在更改 Matplotlib 中的轴标签时遇到问题 我想更改极坐标图中的径向轴选项 基本上 我正在计算圆柱体的变形 这只不过是半径偏离原始 完美圆形 圆柱体的程度 由于拉力和压力 一些变形值为负值 而另一些则为正值 我正在寻找一种方法以图
  • CSS:如何伪造 :hover 状态?

    在这里 我有几个 div 当鼠标悬停在它们上时 会有过渡效果 如左内角 我想首先假装悬停 例如 首先让左外角div处于 hover状态 而没有用户实际的hover动作 然后 当用户真正将鼠标悬停在其他 div 上时 假悬停状态就会取消 对于
  • 如何在 Pl/SQl 中使用批量收集和插入

    我想从一个表中获取大约 600 万行 并将它们全部插入到另一个表中 我该如何使用BULK COLLECT and FORALL declare define array type of the new table TYPE new tabl
  • xUnit 与 Jenkins:如何在构建控制台输出中显示颜色?

    我成功设置了 CasperJS 测试套件 并通过这种方式导出到 xUnit XML 文件 casperjs test googletesting js xunit log xml 我成功地通过 Jenkins 自动化了这些测试 这要归功于x
  • 如何在Jenkinsfile中使用jenkins版本号插件?

    在安装了 版本号插件 的 Jenkinsfile 中尝试此步骤 stage Build echo Building TAG BUILD DATE FORMATTED yyyyMMdd develop BUILDS TODAY sh dock
  • shell 中的浮点舍入

    printf 0 2f n 41 495 41 49 printf 0 2f n 41 485 41 49 printf 0 2f n 41 475 41 47 printf 0 2f n 41 465 41 47 printf 0 2f
  • MPMoviePlayerController 关闭后顶部状态栏消失

    我的 iPhone 应用程序遇到一个有趣的小问题 我有一个带有表格的视图 每个单元格在单击时全屏播放视频 然后当您按完成时 视频停止并返回表格视图 唯一的问题是 当您在视频加载的前 2 或 3 秒内按 完成 时 当视图返回到表格视图时 屏幕
  • Python 中的子进程 Popen 和 PIPE

    以下代码打印一个空行作为输出 该输出为 false 问题不在于权限 因为我使用 pdf 文件的 777 权限测试了该命令 如何修复该命令以提供正确的输出 import subprocess from subprocess import PI
  • 如何为所有子域设置 Git 配置选项?

    与您可以设置的方式类似特定 URL 的 Git 配置选项 https stackoverflow com a 23807432 1233435 like git config http https code example com sslV
  • 如何禁用 Android Lollipop 波纹的 alpha 值?

    我有一个使用自定义颜色的波纹 然而 颜色永远不会完全不透明 根据来自的回答Ripple 的颜色应该是什么 colorPrimary 或 colorAccent 材料设计 https stackoverflow com questions 2
  • 使用 @Query 在 intellij 中进行语言注入

    使用intellij idea 2016 3 4 是否可以根据参数注入语言 考虑一下这个 Query nativeQuery true value select from Foo List
  • 无法添加文件 iOS 应用程序包

    我添加了一个带有扩展名的空文件 js在资源路径中 但未添加到应用程序的捆绑包中 我确信我已添加到应用程序目标 但有时它包含在捆绑包中 有时它不包含在捆绑包中 我通过以下代码获取文件的内容 NSString filePath NSBundle
  • 测试不同客户端和服务器版本的最佳 Git 策略

    我希望能够为 Java 客户端 服务器运行集成测试 使用嵌入式 jetty 此外 我希望能够在集成测试期间混合搭配不同的服务器和客户端源代码版本 我想知道实现此目的的最佳 git 或 maven 版本策略是什么 客户端和服务器使用相同的 g