如何轻松区分不同分支中的配置属性

问题描述 投票:0回答:1

我目前在具有微服务环境的Java中,并且我们正在使用Spring Cloud资源,尤其是Spring Cloud Config。

[情况是,在该Cloud Config服务中,每个微服务都有几个配置文件,例如:service1.yml,service2.yml等。

对于每个环境,我们在不同的分支中定义了这些.yml文件,并带有相应的值,即:dev分支将使用dev环境的属性填充service1.yml文件,test分支将使用测试环境的属性,等等...

这种方法的主要问题是,当将一个环境中的更改合并到另一个环境中时(例如,dev-> test),这两个分支之间的差异太大,需要大量时间来审查所有所做的更改。另一个问题是,在检查该差异时会很容易出错,并跳过不是新属性的更改(使用图形差异工具很容易看到),但是对现有属性的更改确实很难区分,这很容易如果它是分支之一中的实际更改,或者只是环境固有的其他值。

我没有看到Git功能,该功能使我可以像源分支的快照一样制作diff的vs快照吗?我已经知道,将源分支中的提交范围应用到目标分支中是可能的,但是在进行合并时,我确实需要这种行为。

希望我很清楚。预先感谢。

git spring-cloud-config
1个回答
1
投票

是否有我没有看到的Git功能,它使我能够像源分支的快照一样...

提交are快照,分支名称只是查找提交的一种方法。因此,Git已经在这样做。

并制作差异的快照与快照?

这是git diff所做的。鉴于:

git diff <left-side-commit-specifier> <right-side-commit-specifier>

Git提取左侧提交和右侧提交(在内存中)并进行比较。这里的两个说明符可以通过the gitrevisions syntax接受,包括两个分支名称。

如果您想限制git diff的输出,则有很多选项。在这里似乎最适用的一种是,您可以告诉git diff仅显示满足某些路径规范的那些路径。 pathspecs的完整详细信息可以在the gitglossary中找到(这对他们来说有些奇怪),但是最简单的pathspec只是一个文件名,并带有斜杠:

git diff br1 br2 -- config/service1.yml

例如。这里的--是为了确保pathspec不会意外匹配其他内容,例如,如果感兴趣的文件名为-s,则看起来像-s--no-patch选项,以及[C0 ]因此将抑制实际的差异,因此,如果需要命名file git diff br1 br2 -s,则可以使用-s

如果要使用名为git diff br1 br2 -- -sfile,只是随处使用--,这不是不好的习惯。

© www.soinside.com 2019 - 2024. All rights reserved.