V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
tywtyw2002
V2EX  ›  Linux

大家都是怎么在多环境下维护自己的dot文件的?

  •  
  •   tywtyw2002 · 2013-09-24 00:56:15 +08:00 · 2923 次点击
    这是一个创建于 4097 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前用git维护多环境的dot文件,一个环境一个branch。

    结果遇到了问题就是,在一个branch修改了公共部分的文件就会导致其他branch更新太麻烦,而且merge来merge去的搞得git的history很混乱。

    因为不同的环境下,权限不同,有很多变量也需要去修改,配置文件中还有公共的部分,感觉维护的好痛苦。

    以前想过就一个配置文件,然后在里面加if xxx 去区分环境,但是配置文件的if功能也不是很强大。而且没有想倒有什么好方法去用if区分。

    大家都是怎么维护多环境的配置文件呢?
    5 条回复    1970-01-01 08:00:00 +08:00
    dongsheng
        1
    dongsheng  
       2013-09-24 08:01:33 +08:00
    用Dropbox同步,还有个Raspberry Pi是用BTSync同步过去的。

    环境变量主要是bashrc/zshrc的问题吧,我是把所以机器公用的部分写到profile.sh,然后在主rc文件里激活它。
    xell
        2
    xell  
       2013-09-24 10:50:34 +08:00
    楼上似乎没有理解楼主的意思,我来说说我的情况。

    我曾经在三个颇为不同的多环境中并行工作(Windows/Cygwin,Mac,Ubuntu),也是用 git 维护,也是面对着分支合并修改等等带来的混乱。我记忆犹新的是维护 .vimrc 时候的惨状:写了无数的 if 来区分各种情况。

    然后捏……然后我开始唯一地使用 Mac,丢掉其他两个平台,世界清净了。

    我知道上述回答实属坑爹,但我想传达的意思就是这个:目前真的没有什么好方案,因为这其实并不是软件的问题,而是人的需求的问题。其实 git 已经很强大了,如果有心,写些 pre/post-hook 可以以自动化方式应对很多 merge 前后的问题,时常 rebase 一下解决 history 紊乱等等。但无论如何都相当耗费时间精力。所以,如果是硬需求,那就使用(各类)脚本去尽量让电脑帮你完成同步维护的核心工作吧。如果像我这种可以自行决定的,那就坚守一个环境(甚至一台硬件:是的,我只在一台电脑+nas上工作,因此连 dropbox 都不需要)好了。

    说白了,我的建设性意见也就是 git 加上各类脚本,没有更好的。看看其他高手有啥好方案不?
    HowardMei
        3
    HowardMei  
       2013-09-24 12:03:07 +08:00
    有时候repeat yourself是最实用的解决方案,两个文件夹:available enabled
    其它不在这两个地方的也都是软链接搞定,然后尽量多用Ansible/Salt这样的工具替代脚本,
    有必要为个最常规的任务,搞那么复杂分支么?
    tywtyw2002
        4
    tywtyw2002  
    OP
       2013-09-25 00:13:05 +08:00
    @xell 一直很头疼呀,有些配置文件好像不支持if吧?
    我在用if 都是直接在$HOME下touch一个新文件去作为区别。。。。

    很多环境的配置也不同,lab的机器nfs share $home, 然后软件安装位置也头疼。
    tywtyw2002
        5
    tywtyw2002  
    OP
       2013-09-25 00:15:18 +08:00
    @HowardMei 问题的关键是变量不同。。。 比如zsh的位置等等,有几个环境是实验/测试,在那些机器上我都没有root权限的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4758 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 03:46 · PVG 11:46 · LAX 19:46 · JFK 22:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.