git存储库数据结构是否使用规范编码?

时间:2018-06-12 21:00:53

标签: python git dulwich

我正在使用dulwich(一个Python库)来访问git存储库。当我使用get_object检索提交时,它有许多属性。其中之一是author。当我检索此属性时,我得到bytes,因此该属性是一个未知的编码。

我可以安全地假设编码吗? git在存储之前是否将所有元数据转换为utf-8?如果没有,我怎么知道用哪个编码来解码字节?

1 个答案:

答案 0 :(得分:2)

元数据应该使用i18n.commitEncoding config value设置的值进行编码;无论何时创建提交,当前值都会被复制到对象的'encoding'标题中(如果已设置);默认值为UTF-8。

该编码值在Dulwitch对象上可用作'.encoding'属性;如果是None,则i18n.commitEncoding未明确设置,您可以使用UTF-8作为默认值。

然而!存储的实际数据简单地遵循传递给git的任何字节,并且不进行重新编码。配置值纯粹是信息性的。因此,如果您要使用object.encoding or 'utf8'作为编解码器,则需要考虑使用了错误的编解码器,使用合理的错误处理程序或回退策略。