2011-07-12 195 views
2

今天我决定管理和推送我的dotfiles在存储库中。动机是在多台Mac机器和Ubuntu服务器机器上重复使用相同的点文件。管理dotfiles禁止硬编码路径?

我目前想到这种结构:

├── bash 
│   ├── aliases 
│   ├── config 
│   └── env 
├── bash_profile 
├── bashrc 
├── hgrc 
├── src 
│   └── link.py 
└── vimrc 

link.py运行和bashrc创建符号链接,并从~bash_profile到前所未有的这个仓库被克隆到。

问题:1

bashrc内容:

source bash/env 
source bash/config 
source bash/aliases 

问题是因为路径是相对的,这些文件都没有找到。我不想使用绝对路径,因为然后我失去了灵活性来克隆我喜欢的任何地方的存储库。

同样,我bash_profile内容:

source ./bashrc      # same problem! 
source ~/.bashrc     

,因为我以前符号链接~/.bashrcdotfiles/bashrc我能实现这一目标。但它对我来说似乎仍然很肮脏。

问题:2

我应该在哪里把我的路径,这是自定义的特定机器。当然,我不想把它们放在存储库中,也弄乱了其他系统。目前我的自定义路径是~/.profile。我想从bash/env来源if检查它是否存在,否则使用它,否则不。

很想听到更好的方法

+0

考虑要求用户问题[超级用户] (http://superuser.com)。 – 2011-07-13 05:56:01

回答

0

由于我没有在这里得到太多回应,我已经使出扩大我src/link.py符号链接~/.bashdotfiles/bash,这样我可以使用~/.bash/*

我到达bash/*也在我的link.py中添加了一个忽略列表,以忽略.hg,bin目录,以便在执行os.listdir()时不会对它们进行符号链接。

我仍在寻找解决方案来解决第二个问题,尽管我读了一些地方可以为每个具有特定定制需求的机器使用单独的分支来处理我的点文件,而且它似乎是目前最接近的干净解决方案。

2

我使用的符号链接,并没有认为这是“肮脏的黑客”。以前我只是简单地复制所有文件(并且仍然在为某些文件(而不是bash)执行此操作),并且因为所有文件都是用于$ HOME/.some的,我使用了“$ HOME”(而不是'〜',因为'〜'在双引号未展开,但$ HOME肯定的。)

0

这是真的很晚回复,但我仍然会建议你检查DFM(dotfiles经理)。DFM解决你在一个非常干净的方式有问题: