我想用 git 跟踪我的 $HOME 目录。我在其他子目录中还有许多其他 git 存储库(例如 $HOME/projects/repo_1 等),这些存储库不应该被跟踪,因为它们已经被跟踪了。
我已经发现git-home-history但从档案中可以看出,该项目不再积极开发。
您推荐什么方法?ghh 足够成熟吗?
我使用 Mac,但我也对跨平台解决方案感兴趣。
谢谢
附言:我查看过但没有发现重复的内容,如果已经讨论过,请指出。
答案1
我已经使用 git 做了一段时间了。我不会跟踪整个主目录,只跟踪我正在更改的部分。这包括我的 home/bin 目录,其中包含许多小脚本、我的 .vim 目录和其他目录中的一些大型项目。此外,还有一些终端和 openbox 的配置,以及添加到 repo 中的各种其他应用程序。
这种方法效果很好,因为所有这些东西都具有相同的权限集,而且我不在乎原始时间戳。现在我正计划使用 将其中一些内容分解为子模块git filter-branch
。但这有点棘手,因为不同子目录中的文件之间存在相互依赖关系(例如,某些 .vim 脚本可能会调用我的 bin 目录中的脚本……这不是一个很好的例子,但希望您明白我的意思)。
我还没有找到更全面的解决方案,但也没有真正研究过任何解决方案,包括 git-home-history。将整个主目录置于修订控制之下似乎相当复杂,而且会有很多变量。例如,如果您将 Firefox 配置文件置于修订控制之下,您最终会积累大量的二进制差异。此外,还有一些像 ssh 密钥这样的东西,丢失往往比复制更好。
如果你确实想跟踪权限(除了可执行位,git 已经跟踪了),显然有一个钩就可以了。此 serverfault 线程。
答案2
您可以在主目录中使用 git,然后对您正在处理的外部 git 项目使用 git submodules 或 revise-tree。