Dotter¶
简介¶
dotter 是一个用 Rust 编写的点文件管理器
对比¶
在点文件管理器中,更权威的应该是 chezmoi 这个工具
chezmoi 官方文档里虽有 与各种点文件管理器的比较,但缺少了 dotter。个人感觉 chezmoi 更全能,但 dotter 相对更易用
安装¶
# Windows
scoop install dotter
使用¶
详细内容请参考 官方文档
基本使用¶
初始化仓库¶
# 先创建目录
mkdir dotfiles
cd dotfiles
# 初始化
dotter init
然后往 .gitignore 里写入如下内容
.dotter/local.toml
.dotter/cache.toml
.dotter/cache
迁移点文件¶
首先把想要管理的文件复制过来,可以改个更好记的名字
cp ~/.vimrc vimrc.vim
然后修改 .dotter/global.toml 中的 [default.files]。等号前面是当前仓库里的相对路径,后面是要存放的位置
[helpers]
[default]
depends = []
[default.files]
"vimrc.vim" = "~/.vimrc"
"fastfetch/fastfetch.jsonc" = "~/.config/fastfetch/config.jsonc"
创建符号链接¶
上述任务完成后就可以开始创建符号链接了
# 只查看运行结果,不实际修改
dotter deploy --dry-run -f
# 删除原文件,创建符号链接,并显示详细日志
dotter deploy -v -f
-f 参数会把原位置存在的文件删除后再创建符号链接。
备份和同步¶
为了能够备份和同步,可以把仓库上传到云端,比如 Github。仓库可以设成私有的,如果只有自己使用
要在新机器上要同步点文件,首先得把 git 和 dotter 安装了,然后按如下步骤操作
git clone https://github.com/xxxxxxx/dotfiles
cd dotfiles
dotter deploy -v -f
高级特性¶
dotter 支持很多高级特性,能够满足复杂的点文件管理需求
模板和变量¶
dotter 可以使用模板替代符号链接。
模板就是把源文件的内容复制到目标文件中,对两边的修改都不会自动同步到另一边。但模板的好处是支持变量,通过 {{var}} 使用
# git.ini
[core]
editor = code --wait
[user]
name = {{git_name}}
email = {{git_email}}
[init]
defaultBranch = main
含有 {{}} 的文件自动被视为模板,也可以通过 type 字段强制指定类型
[default.files]
zshrc = { target = "~/.zshrc", type = "symbolic" }
zprofile = { target = "~/.zshrc", type = "template" }
变量定义在包的 variables 属性里
# windows.toml
[windows.variables]
scoop_root = "~/scoop"
# local.toml
[variables]
scoop_root = "E:/Program/Scoop"
变量可以被覆盖。关于包及其覆盖规则参见后面的 文件和包 这部分
文件和包¶
dotter 支持两种程度的模块化,即文件和包
包使用如下方式定义。包可以有自己的依赖,并且有 files/variables 这些属性
[example]
depends = ["dep"]
[example.files]
"example.toml" = "~/.config/example"
[example.variables]
"example_var" = "example"
一个文件中可以定义多个包。local.toml 和 global.toml 这两个文件比较特殊,完整的包加载规则是
- 加载
global.toml中的所有包 - 加载
local.toml中includes字段指定文件的所有包,这些包会合并global.toml中包的files/variables属性 - 保留
local.toml中packages字段指定的包及其依赖 files/variables最后和local.toml中的合并,得到最终值