Linux 使用git维护特定于分支的配置文件
有一个问题让我困惑了很长一段时间,因为我找不到好的、或多或少是通用的解决方案 假设有两个git分支可用,Linux 使用git维护特定于分支的配置文件,linux,git,version-control,configuration,Linux,Git,Version Control,Configuration,有一个问题让我困惑了很长一段时间,因为我找不到好的、或多或少是通用的解决方案 假设有两个git分支可用,production和dev;对于某些任务(即凭证、构建路径、测试/部署脚本等),每个任务都使用自己的可配置参数。同时实现脚本和代码对于两个分支都是通用的 现在,问题出现了——如何以所需的方式在git存储库中维护特定于分支的配置。一种常见的解决方案是在git中使用“模板”配置文件,对特定分支进行符号链接并忽略其具体内容,如 $ cat .gitignore | grep conf /concr
production
和dev
;对于某些任务(即凭证、构建路径、测试/部署脚本等),每个任务都使用自己的可配置参数。同时实现脚本和代码对于两个分支都是通用的
现在,问题出现了——如何以所需的方式在git存储库中维护特定于分支的配置。一种常见的解决方案是在git中使用“模板”配置文件,对特定分支进行符号链接并忽略其具体内容,如
$ cat .gitignore | grep conf
/concrete.conf
$ ls -l *.conf
lrwxrwxrwx 1 1000 100 12 Oct 29 10:23 concrete.conf -> generic.conf
-rw-r--r-- 1 1000 100 0 Oct 29 10:16 generic.conf
下一步,在开发框上断开并调整concrete.conf
。但这不是我追求的解决方案
我的要求(好的,愿望)是:
- 支持每个git分支单独的配置文件,以及
- 让git同时管理特定于分支的配置文件
PS:*nix特定建议(即使用符号链接/硬链接)建议绝对可以,我对M$targets确实感兴趣,这是可能的,并且不涉及符号链接 您没有版本
my.config
,而是一个模板文件my.config.tpl
,以及一个值文件(每个分支都有值)
然后,您可以使用,使用
(来自“”的图像,来自“”)
每次签出分支时,脚本都会通过将占位符值替换为
文件的值来生成my.config
文件。您可以通过以下方式了解当前分支名称:
branch=$(git rev-parse --symbolic --abbrev-ref HEAD)
生成的实际my.config
仍被忽略(被.gitignore
忽略)。这意味着您的实际工作树不会变得“脏” 涂抹脚本选择正确的值文件,并根据
git签出期间应用涂抹脚本的模板生成正确的web.config
请参阅“.”中的完整示例。谢谢,乍一看这似乎是合理的;在接受你的回答之前,我需要仔细思考和消化一下。这涉及到提交/结帐/等等;我也在审视自己的方向。如果不使用一些钩子,就不可能有解决方案。思考这个问题的合乎逻辑的结果described@Not确实是一个钩子,但是是的,您需要一个本地配置设置来激活declare.gittattributes
smudge脚本。钩子术语可能是具体的,虽然应用于git scm,但据我所知,这个概念非常相似。再次感谢您的帮助。只要我运行几个沙箱测试,我就会提出我的问题/你的答案/解决方案,以确保我正确理解这里发生的一切
branch=$(git rev-parse --symbolic --abbrev-ref HEAD)