使用 git 的符号链接

使用 git 的符号链接

为了更好地管理,我过去将我的系统配置文件全部放在一个目录中,但现在我需要对其进行一些版本控制。

但问题是 git 不理解指向存储库外部的符号链接,而且我无法反转角色(将真实文件放在存储库中,将符号链接放在正确的路径上),因为某些文件在内核加载之前就被读取了。

我认为我可以使用 unison 来同步存储库中的文件及其路径,但这不切实际。而且硬链接可能会被破坏。有什么想法吗?

答案1

如果手动是编辑这些文件的唯一方法,您可以将规范版本放入系统配置目录,并在 git 中设置一个提交后钩子,将它们复制到它们的“真实”位置。

答案2

在 Debian 及其派生发行版中,你可以使用etckeeper进行管理/etc。它很简单,只需安装 etckeeper、运行etckeeper init一次并etckeeper commit在您更改某些内容时运行即可。

我不知道 etckeeper 是否可以直接用于 Arch Linux,但是有成功 报告在网上。

Etckeeper 使用 git hooks 来处理元数据,例如权限、所有权和符号链接。

答案3

您可以使用--work-tree标志和--git-dir标志(git help git,将两者都设置为绝对路径并创建别名)将 .git 文件夹置于版本化目录之外。

答案4

使其成为硬链接,而不是软链接。

我有同样的问题,我使用 etckeeper,它将我的文件复制到 /etc,而我不想要这样。

因此,

ln -s /srv/www/site/apache.conf srv_site.com

ln /srv/www/site/apache.conf srv_site.com

并且成功了!:D

相关内容