我正在尝试创建一个git存储库来存储我所有的dotfile和config文件。我的想法是简单地创建到我关心的所有文件的硬链接,并将这些链接存储在它们自己的目录中,我可以将这些目录转换为存储库。
不过,我的~/.gitconfig文件遇到了一点小问题。似乎每当我运行'git config‘命令时,我创建的链接不再指向正确的位置,例如,存储库中的文件不再正确更新。
下面是一个使用shell和交互式ruby来确定文件链接状态的示例。
# Create the link
$ ln .gitconfig .conf_files/gitconfig # Create the link
# The files are in fact linked
[1] pry(main)> File.identical?('.gitconfig', '.conf_files/gitconfig')
=> true
# Update the gitconfig file by running a 'git config' command
$ git config --global alias.last 'log -1 HEAD'
# The files are no longer linked.
[2] pry(main)> File.identical?('.gitconfig', '.conf_files/gitconfig')
=> false我认为这与git编写.gitconfig文件的方式有关。有没有人知道为什么会发生这种情况,或者有什么创造性的解决办法?
发布于 2012-08-03 07:52:08
在http://www.xxeo.com/archives/2010/02/16/dotfiles-in-git-finally-did-it.html的评论中尝试Eli Barzilay的解决方案
所以我终于找到了一个两者兼而有之的解决方案:将存储库放在一个子目录中,而不是符号链接,添加一个配置选项“core.worktree”作为您的主目录。现在,当您在您的主目录中时,您不在git代码库中(所以第一个问题已经解决了),并且您不需要像在第二个案例中那样处理脆弱的符号链接。你仍然有排除那些你不想版本化的路径的小麻烦(例如,“.git/info/exclude”技巧中的“*”),但这并不是新的。
发布于 2012-08-03 06:21:09
这是完全正常的,实际上也是覆盖配置文件的推荐方式。Git创建一个临时文件,写出配置,然后将新文件移到旧文件上。这样,即使Git中断,也不会得到不完整的配置文件(数据丢失)。
您可以随时编写脚本,将配置文件复制或链接到中央存储库。
发布于 2012-08-03 06:23:05
看看这个答案,也许会对你有所帮助:
https://stackoverflow.com/a/3731139/1431696
同时,你有没有考虑过反向链接呢?创建充满配置文件等的存储库,然后在您实际使用文件的位置,创建到“真正”文件的硬链接,该文件位于存储库中。
https://stackoverflow.com/questions/11786623
复制相似问题