使用 git 进行配置管理时处理特定于机器的配置

使用 git 进行配置管理时处理特定于机器的配置

我已经使用 git repo 来管理我的系统配置有一段时间了。我使用了 Digital Ocean 教程上的文档这里。我的服务器上几乎有一个远程存储库。对存储库进行 git 克隆。然后将点文件和目录符号链接到主目录。如果我更改配置文件,我只需将 git push 到远程存储库即可。

我遇到的问题是我需要某些配置的不同版本。例如,.i3blocks 配置会有所不同,具体取决于我使用的是家庭工作站、笔记本电脑还是工作机器。我对 git 不太熟悉,所以我不知道如何处理这个问题。有什么建议么?

答案1

这并不是真正的 git 问题。相反,您必须考虑您拥有什么类型的配置文件、它们提供哪些选项来读取其他文件以及它们对于不同系统有何不同。

例如,对于您的~/.bashrc,您可以有一个主文件,该文件用一行读取主机特定的配置source

DOTFILES=~/.dotfiles
source $DOTFILES/$HOSTNAME.bashrc 

对于在配置语法中不允许此类操作的其他程序,您可能实际上需要在存储库中为不同系统提供多个文件,并且仅链接适当的文件。

ln -s ~/.dotfiles/i3blocks.$HOSTNAME ~/.i3blocks 

您甚至可以将其与一些从构建块构建文件的脚本或某些模板机制结合起来,并由 git hook 触发。

答案2

我做了类似的事情,并使用不同的分支进行不同的设置。这样,当您在给定的计算机上时,您可以执行git checkout config-laptopgit checkout config-htpc等操作来获取您想要的文件。

此外,如果您对一个分支中的文件进行了更改并希望将其传播到其他分支,则可以跨分支合并它们。使用类似的工具吉特克拉肯甚至允许您只合并您想要的部分(块),甚至单行。

相关内容