我试图从存储库中获取文件。
blob.GetContentText()
该文件用“ \ r”表示。在我看来,LibGit2Sharp删除了此角色。是否有可能获得不作任何更改的真实内容?
Update1我在文本文件中包含以下内容:
test1 \r\n
test2 \r\n
test2 \r\n
我提交了文件,可以使用git cat-file返回\ r \ n。
如果我尝试通过LibGit2Sharp获取内容,我只会得到\ n。
我尝试使用不同的编码的GetContextString()以及以下内容:
Blob blob = (Blob)treeEntry.Target;
string content;
using (var tr = new StreamReader(blob.GetContentStream(), Encoding.UTF8))
{
content = tr.ReadToEnd();
MessageBox.Show(content);
}
GetContentText()
默认情况下不会执行任何cr / lf替换。只有接受a的重载才FilteringOptions
允许这样做。
GetContextText()
只会尝试将默认的UTF8应用于UTF16编码转换。可以通过显式传递Blob
内容的编码来覆盖它。
是否有可能获得不作任何更改的真实内容?
使用GetContentStream()
。它将返回Blob的原始内容。
您可以看一下BlobFixture测试套件,以更好地了解这些方法及其行为。
该文件包含“ \ r”。
考虑到上面的解释,blob实际上在git对象数据库中包含此字符的可能性很大。您可以通过git cat-file命令和十六进制编辑器再次检查。
注意:如果您在库中找到了错误,请在错误跟踪器中使用repro案例引发问题。我们会很乐意修复它!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句