如何使用git跟踪$ HOME


10

我想用git跟踪我的$ HOME目录。我在其他子目录(例如$ HOME / projects / repo_1等)中还有许多其他git repos,不应跟踪它们,因为它们已经存在。

我已经找到了git-home-history,但是从档案中看来,该项目不再被积极开发。

您推荐什么方法?ghh是否足够成熟?

我在Mac上,但我也对跨平台解决方案感兴趣。

谢谢

ps:我看过但没有找到重复项,如果已经讨论过,请指出。

Answers:


5

我已经使用git做了一段时间了。我不会跟踪整个主目录,而不会跟踪我正在积极更改的部分。这包括我的home / bin目录,该目录包含许多小脚本,我的.vim目录以及其他目录中的一些较大项目。还有一些用于终端和openbox的配置,以及各种其他应用程序,已添加到存储库中。

因为所有这些东西都具有相同的权限集,所以我的效果很好,而且我不在乎原始时间戳。到了我打算使用将其分解为子模块的地步git filter-branch。但是,这有点棘手,因为不同子目录中的文件之间存在相互依赖关系(例如,某些.vim脚本可能会从我的bin目录中调用脚本……不是一个很好的例子,但希望您能理解这一点)。

我没有找到任何更全面的解决方案,但也没有真正研究过任何解决方案,包括git-home-history。将整个主目录置于版本控制下似乎非常复杂,并且会有很多变量。例如,如果将Firefox配置文件置于版本控制下,最终将堆积大量的二进制差异。此外,还有诸如ssh key之类的东西,通常比丢失更好。

如果您确实想跟踪权限(除了git已经跟踪的可执行位之外),显然有一个钩子可以做到这一点。在该serverfault线程中已提及。


您了解我的用例:实际上,我对脚本和配置的版本控制感兴趣。我将采用这种基本方法。
Francesco 2010年

仅供参考:这些天来我遇到的问题是,在使用新组件时,我不想分支.vim目录。我正在考虑多种方法:我可能最终会使用将其拆分为一个单独的模块filter-branch,并在〜的子目录中设置它的“正在进行的工作”副本。这似乎是一个通常有用的策略:我希望克隆我的整个home dir存储库,然后将$ HOME设置为克隆目录后,测试脚本也将同样有用。我不确定该环境变量的通用性如何,但我会看到。
直觉

0

您可以在主目录上使用git,然后对所使用的外部git项目使用git子模块或revise-tree。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.