大家都是怎么在多环境下维护自己的dot文件的?
- 0次
- 2021-07-21 04:44:35
- idczone
目前用git维护多环境的dot文件,一个环境一个branch。
结果遇到了问题就是,在一个branch修改了公共部分的文件就会导致其他branch更新太麻烦,而且merge来merge去的搞得git的history很混乱。
因为不同的环境下,权限不同,有很多变量也需要去修改,配置文件中还有公共的部分,感觉维护的好痛苦。
以前想过就一个配置文件,然后在里面加if xxx 去区分环境,但是配置文件的if功能也不是很强大。而且没有想倒有什么好方法去用if区分。
大家都是怎么维护多环境的配置文件呢?
用Dropbox同步,还有个Raspberry Pi是用BTSync同步过去的。
环境变量主要是bashrc/zshrc的问题吧,我是把所以机器公用的部分写到profile.sh,然后在主rc文件里激活它。
楼上似乎没有理解楼主的意思,我来说说我的情况。
我曾经在三个颇为不同的多环境中并行工作(Windows/Cygwin,Mac,Ubuntu),也是用 git 维护,也是面对着分支合并修改等等带来的混乱。我记忆犹新的是维护 .vimrc 时候的惨状:写了无数的 if 来区分各种情况。
然后捏……然后我开始唯一地使用 Mac,丢掉其他两个平台,世界清净了。
我知道上述回答实属坑爹,但我想传达的意思就是这个:目前真的没有什么好方案,因为这其实并不是软件的问题,而是人的需求的问题。其实 git 已经很强大了,如果有心,写些 pre/post-hook 可以以自动化方式应对很多 merge 前后的问题,时常 rebase 一下解决 history 紊乱等等。但无论如何都相当耗费时间精力。所以,如果是硬需求,那就使用(各类)脚本去尽量让电脑帮你完成同步维护的核心工作吧。如果像我这种可以自行决定的,那就坚守一个环境(甚至一台硬件:是的,我只在一台电脑+nas上工作,因此连 dropbox 都不需要)好了。
说白了,我的建设性意见也就是 git 加上各类脚本,没有更好的。看看其他高手有啥好方案不?
有时候repeat yourself是最实用的解决方案,两个文件夹:available enabled
其它不在这两个地方的也都是软链接搞定,然后尽量多用Ansible/Salt这样的工具替代脚本,
有必要为个最常规的任务,搞那么复杂分支么?
一直很头疼呀,有些配置文件好像不支持if吧?
我在用if 都是直接在$HOME下touch一个新文件去作为区别。。。。
很多环境的配置也不同,lab的机器nfs share $home, 然后软件安装位置也头疼。
问题的关键是变量不同。。。 比如zsh的位置等等,有几个环境是实验/测试,在那些机器上我都没有root权限的