marsevilspirit's blog

dotflies的管理

由于dotfile越来越多,每个dotfile创建一个git仓库显然是不现实的。
所以我打算创建一个dotfiles的git仓库统一管理。
参考farseerfc的博客:https://farseerfc.me/zhs/using-gnu-stow-to-manage-your-dotfiles.html
我打算用GNU的stow来管理dotfiles。

arch linux安装stow

1
$ sudo pacman -S stow

迁移配置前,一定要先备份。

建一个${HOME}/dotfiles文件夹,在里面为每个应用创建子文件夹。然后把这些程序的配置从原本的家目录移动到这每一个对应的子文件夹中, 并保持它们在家目录中的文件夹结构。比如,如果某个文件原本应该位于家目录的顶层文件夹里, 那它现在应该放在这个程序名子目录的顶层文件夹。如果某个配置文件通常应该位于默认的 ${XDG_CONFIG_HOME}/${PKGNAME} 位置 (${HOME}/.config/${PKGNAME}), 那么现在它应该放在 ${HOME}/dotfiles/${PKGNAME}/.config/${PKGNAME} ,如此类推。然后在那个dotfiles文件夹里面,直接运行 $stow $PKGNAME 命令,Stow就会为你自动创建这些配置文件的符号链接到合适的位置。接下来就很容易为这个dotfiles目录初始化版本管理仓库,从而记录你对这些配置文件做的修改(并且这也可以极度简化在不同电脑之间 共享配置,这也是我想要这么做的主要原因)。

你原先的配置文件:

1
2
3
4
5
6
home/
mars/
.config/
nvim/
[...some files]
.zshrc

然后迁移配置的方式是,应该建一个 dotfiles 子目录,然后像这样移动所有配置文件:

1
2
3
4
5
6
7
8
9
10
home/
mars/
.config/
dotfiles/
zsh/
.zshrc
nvim/
.config/
nvim/
[...some files]

然后执行以下命令:

1
2
3
4
$ cd ~/dotfiles
$ stow bash
$ stow uzbl
$ stow vim

然后,瞬间,所有你的配置文件(的符号链接)就安安稳稳地放入了它们该在的地方,无论原本这些目录结构 有多么错综复杂,这样安排之后的 dotfiles 文件夹内的目录结构立刻整理得有条有理, 并且可以很容易地转换成版本控制仓库。非常有用的一点是,如果你有多台电脑,可能这些电脑并没有 安装完全一样的软件集,那么你可以手选一些你需要的软件配置来安装。在你的 dotfiles 文件夹中总是 可以找到所有的配置文件,但是如果你不需要某个程序的某份配置,那你就不对它执行 stow 命令,它就不会扰乱你的家目录。

Oct 2024