版本和备份git存储库
doublegit的Python项目详细描述
这是什么?
这是一个小工具,它可以git fetch然后在sqlite3数据库中记录所有ref更新。它还创建ref以确保没有commit被垃圾收集。
为什么?
如果将远程存储库强制推送到,则某些提交可能会丢失。git日志中也没有证据表明发生了这种破坏性的变化。也可以创建一个提交,但推送的时间要晚得多,或者可以重命名分支;这些都不会出现在git日志中。
这个工具将允许您清楚地了解发生了什么,永远不会丢失提交,并在特定时间点快速获取存储库的快照。因此,它比镜像更适合备份。
重新登录不都能做到吗?
这确实与git的内置reflog类似,只是reflog不知道分支重命名,分支的reflog随分支一起被删除。
它也是本地的,因此您将无法读取远程存储库的reflog。
如何使用
首先,创建一个裸回购:
$ mkdir my-repo-backup && cd my-repo-backup $ git init --bare
设置一个(或多个)遥控器以从中提取:
$ git remote add origin https://github.com/remram44/doublegit.git
然后只需偶尔运行doublegit即可:
$ python3 doublegit.py /path/to/my-repo-backup
然后,您可以查询gitarchive.sqlite3以获取分支更新或给定时间点的分支位置。
下一步?
我认为如果这个工具也能记录github/gitlab/…api事件,比如问题/合并请求/评论,那就太酷了。
它还可以自动备份您所有的星型回购协议。
这也不支持标签。