我们正在开发一种产品,我们使用Git作为我们的SCM。该产品的每个次要版本都位于其独立的分支中。作为开发人员,我有自己的一组数据库,每个次要版本都有一个。我还有一个私有配置文件,Git会忽略它,它指定要使用的数据库。但是因为它被Git忽略了,所以无论我目前在哪个分支上它都保持不变。这没有用,因为如果配置文件说使用数据库db_1_2(用于分支1.2),切换到分支1.3会使配置文件仍然指向数据库db_1_2。
我目前有一段代码读取并解析分支标识符以设置正确的数据库,但它容易出错,因为Git标识符有很多种类,其中大多数都很难/不可能解决来自。
的正确分支名称我可以询问产品本身,但并非所有旧版本都有静态getVersion()方法。
所以我的问题是:有没有任何好的和干净的方法让私人配置文件以某种方式属于某个分支,但是在推送到远程/中央仓库时不能将它变成最终产品?
答案 0 :(得分:2)
当数据库与分支完全相关时,为什么数据库版本在忽略的配置文件中?您正在寻找一种从分支中确定数据库的方法,但分支的整个工作是提供特定于分支的代码状态,并与分支中的其他所有内容保持一致。将数据库标识符从配置文件中移出到不被忽略的内容中。
答案 1 :(得分:0)
如何创建一系列以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
这一切都变得自动化了。如果切换到没有现有配置的分支,您甚至可以获得想象并创建模板配置文件。
答案 2 :(得分:-1)
您可以更改(自动)配置,反映分支更改,如果它将作为模板进行版本化,并使用this my post中的提示,您将在模板和过滤器的分支相关部分中添加关键字用于处理这些关键字。任何变更集的分支可能是
git branch | grep "*"
git status | grep 'On branch'
git symbolic-ref -q HEAD
(?)
git branch | sed --quiet 's/* \(.*\)/\1/p'
无法看到如何避免推动副作用