python ls_python – 如何工作git ls-files脚本

根据腐败程度,这可能是也可能不可行. Git的数据结构和相关工具更适合于检测腐败而不是修复它.

特别是,索引本身不是存储库的一部分,它是从当前内容派生的,因此在大多数情况下,最好删除它并执行git reset以重新创建它.无论谁读到你的问题,都可能想知道你的存储库是如何进入该状态的.

考虑到这一点,这里有几个想法:

索引的最后20个字节是到该点为止的文件内容的sha1.如果那些已损坏,您可以使用十六进制编辑器覆盖它们.

~$python3

>>> data = open('.git/index','rb').read()

>>> data[-20:].hex()

'e211d8f60209ca8571c2acc73f9a24ef523b5fa3'

>>> hashlib.sha1(data[:-20]).hexdigest()

'e211d8f60209ca8571c2acc73f9a24ef523b5fa3'

这可以解决由脑损伤工具引起的简单损坏.

如果你真的想从一个完全损坏的索引文件中恢复任何东西,你可能想要:

>在参考实现中阅读index-format.txt.

>查看libgit2中的parse_index例程.

>查看索引文件导致的特定错误.

>小心地修补该例程,以便在不崩溃的情况下继续处理坏数据.

另一种方法可能是使用strings实用程序,如果您只想查看文件名列表.您将丢失相关的二进制信息(并且某些二进制信息将包含可打印的ASCII垃圾).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值