0

我正在编写一个 python 脚本来使我的 dotfiles 与 GitHub 上的存储库保持最新。它将点文件复制到一个单独的目录 ( ~/dotfiles) 中,这样我的主目录就不是一个 git repo。在复制文件之前,它会filecmp.cmp( fileInLocalRepo,fileInHomeDir )检查文件自上次复制到本地 repo 后是否发生了变化。更新所有文件后,如果有任何更改,则将更改的文件推送到 GitHub。

在我开始从多台计算机更新点文件之前,这很好用,然后旧文件可能会覆盖我的远程文件。dotfiles如果我先将文件拉到我的本地仓库,filecmp.cmp()仍然会说文件不同,脚本会用本地文件覆盖拉下的文件,然后推送,因为它认为有变化。

有什么办法可以找出哪个文件实际上更新?我知道 git 不会在文件属性中保留更新时间,所以我不能使用它。如何将文件从 GiHut 下载到本地存储库~/dotfiles

4

1 回答 1

3

假设您设置的所有计算机都有准确的时间,您可以让它为每个点文件创建一个时间戳文件,其中只包含点文件的本地修改时间。然后您可以将本地时间戳与远程时间戳进行比较。

您也可以只在本地进行提交并尝试与远程分支合并。如果合并成功,则假设它没问题。如果失败,那么文件的同一部分有两个不同的更改,并且需要解决冲突,在这种情况下,您会以某种方式通知自己。

一个可能更简单且不易出错的解决方案(因为它更手动)是将您的点文件符号链接到 git 中的点文件。然后,当您编辑 dotfile 时,git 会更新,您可以轻松手动提交和推送更改。

于 2013-12-02T23:10:40.420 回答