我正在尝试在版本控制下管理我的点文件。我的 dotfiles repos 包含一个xfce-base
文件夹,这个文件夹包含这些.config/xfce4/.../xy-setting.xml
东西。我可以将符号链接存放(或者更好)到正确的位置,一切都按预期工作。
但是,当我打开 xfce 设置编辑器之一(窗口管理器、键盘快捷键)时,所做的更改确实会用普通文件覆盖我的符号链接。所以,再见版本控制。我想如果我有硬链接,这种情况就不会发生,对吗? gnu stow 是否可以进行硬链接(看起来不是这样?),或者有其他选择吗?
编辑:我遇到了这,执行硬链接,但不能递归工作(抱怨现有的 .config 目录...)
编辑二:我仍然不确定硬链接是否是一个好的解决方案。
答案1
您是对的,GNU Stow 目前不支持硬链接。不过,我认为您也是正确的,因为硬链接可能并不是比符号链接更好的解决方案,因为如果外部应用程序乐意用普通文件替换符号链接,那么它当然也可以破坏硬链接(即替换索引节点)。
不过,我确实有一些好消息要告诉你:-) 我还使用 GNU Stow 来管理我的点文件,这就是为什么我在2.1.3中专门添加了选项--adopt
帮助准确处理这种情况。外部程序破坏了您的符号链接后,您可以简单地使用此选项重新加载,然后该文件的可能更改的版本将被采用到您的 Stow 包目录中,并且恢复符号链接,最终效果是不更改内容文件的。由于您通过版本控制跟踪点文件,因此您可以查看已更改的内容(例如通过git diff
),然后如果需要,可以签入部分或全部更改。
注意:对于版本控制系统中未跟踪的包目录,这是一个有风险的选项,因为它可以修改 Stow 包的内容,而无法撤消更改。