我想用git跟踪我的$ HOME目录。我在其他子目录(例如$ HOME / projects / repo_1等)中还有许多其他git repos,不应跟踪它们,因为它们已经存在。
我已经找到了git-home-history,但是从档案中看来,该项目不再被积极开发。
您推荐什么方法?ghh是否足够成熟?
我在Mac上,但我也对跨平台解决方案感兴趣。
谢谢
ps:我看过但没有找到重复项,如果已经讨论过,请指出。
我想用git跟踪我的$ HOME目录。我在其他子目录(例如$ HOME / projects / repo_1等)中还有许多其他git repos,不应跟踪它们,因为它们已经存在。
我已经找到了git-home-history,但是从档案中看来,该项目不再被积极开发。
您推荐什么方法?ghh是否足够成熟?
我在Mac上,但我也对跨平台解决方案感兴趣。
谢谢
ps:我看过但没有找到重复项,如果已经讨论过,请指出。
Answers:
我已经使用git做了一段时间了。我不会跟踪整个主目录,而不会跟踪我正在积极更改的部分。这包括我的home / bin目录,该目录包含许多小脚本,我的.vim目录以及其他目录中的一些较大项目。还有一些用于终端和openbox的配置,以及各种其他应用程序,已添加到存储库中。
因为所有这些东西都具有相同的权限集,所以我的效果很好,而且我不在乎原始时间戳。到了我打算使用将其分解为子模块的地步git filter-branch
。但是,这有点棘手,因为不同子目录中的文件之间存在相互依赖关系(例如,某些.vim脚本可能会从我的bin目录中调用脚本……不是一个很好的例子,但希望您能理解这一点)。
我没有找到任何更全面的解决方案,但也没有真正研究过任何解决方案,包括git-home-history。将整个主目录置于版本控制下似乎非常复杂,并且会有很多变量。例如,如果将Firefox配置文件置于版本控制下,最终将堆积大量的二进制差异。此外,还有诸如ssh key之类的东西,通常比丢失更好。
如果您确实想跟踪权限(除了git已经跟踪的可执行位之外),显然有一个钩子可以做到这一点。在该serverfault线程中已提及。
filter-branch
,并在〜的子目录中设置它的“正在进行的工作”副本。这似乎是一个通常有用的策略:我希望克隆我的整个home dir存储库,然后将$ HOME设置为克隆目录后,测试脚本也将同样有用。我不确定该环境变量的通用性如何,但我会看到。