繁体   English   中英

我可以在不同的git分支中拥有不同的私有配置文件吗?

[英]Can I have different private config files in different git branches?

我们正在开发产品,我们将Git用作我们的SCM。 产品的每个次要版本都位于其单独的分支中。 作为开发人员,我有自己的数据库集,每个次要版本一个。 我还有一个私有配置文件,Git会忽略它,它指定要使用的数据库。 但是由于它被Git忽略,所以无论我当前在哪个分支上,它都保持不变。 这样做不好,因为如果配置文件说要使用数据库db_1_2(用于分支1.2),则切换到分支1.3会使配置文件仍然指向数据库db_1_2。

我目前有一段代码可以读取并解析分支标识符,以设置正确的数据库,但是它容易出错,因为Git标识符具有多种形式,其中大多数很难/不可能解析正确的分支。名字来自。

我可以询问产品本身,但并非所有旧版本都具有静态的getVersion()方法。

所以我的问题是这样的:是否有任何良好且干净的方法来使私有配置文件以某种方式属于分支,但当推送到远程/中央存储库时却不能成为最终产品?

当数据库与分支如此紧密相关时,为什么数据库版本在忽略的配置文件中? 您正在寻求一种从分支机构确定数据库的方法,但是分支机构的整个工作是提供特定于分支机构并与分支机构中其他所有内容一致的代码状态。 将数据库标识符从配置文件中移到不被忽略的地方。

如何创建一系列以git分支命名的配置文件? 然后,当机会出现分支时,您可以执行以下操作:

ln -s configs/$(git symbolic-ref HEAD|cut -f3 -d/) myconfig.conf

或者,代替运行:

git co -b branchname

制作switchbranch脚本的操作类似于:

git co -b $1
ln -s configs/$1 myconfig.conf

一切都变得自动化。 如果切换到没有现有配置的分支,您甚至可以幻想并创建模板配置文件。

你可以有多变(自动)配置,反映分支的变化,是否会使用从理念进行版本为模板, 这是我的帖子 ,你会添加关键字为模板的分支相关的部分和过滤器处理这些关键字。 任何变更集的分支可能是

git branch | grep "*"

git status | grep 'On branch'

git symbolic-ref -q HEAD (?)

git branch | sed --quiet 's/* \\(.*\\)/\\1/p'

看不到如何避免推推的副作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM