मैं बहुत ही सरल लेकिन परेशान करने वाली समस्या से फंस गया हूं, और इंटरनेट पर जवाब नहीं मिल रहा है। आशा है कि आप मुझे इंगित करने में सक्षम होंगे, मैंने क्या गलत किया है।गिट ऑब्जेक्ट्स डीकोडिंग/"ब्लॉक लम्बाई इसके पूरक के साथ मेल नहीं खाती" त्रुटि
मैं गिट भंडार से ऑब्जेक्ट को डीकोड करने का प्रयास कर रहा हूं। ProGit के अनुसार, फ़ाइल नाम और इसकी सामग्री को प्रतिबद्ध के दौरान डिफ्लेट किया गया है।
मैं एक धारा में SHA1 द्वारा इंगित ऑब्जेक्ट को पढ़ने के लिए सी # का उपयोग कर रहा हूं, इसे बढ़ाता हूं और बाइट सरणी में परिवर्तित करता हूं। यहाँ कोड है:
using System.IO.Compression;
static internal byte[] GetObjectBySha(string storagePath, string sha)
{
string filePath = Path.Combine(storagePath, "objects", sha.Substring(0, 2), sha.Substring(2, 38));
byte[] fileContent = null;
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
using (MemoryStream ms = new MemoryStream())
{
using (DeflateStream gs = new DeflateStream(fs, CompressionMode.Decompress))
{
gs.CopyTo(ms);
}
fileContent = ms.ToArray();
}
}
return fileContent;
}
जब gs.CopyTo(ms);
रनटाइम त्रुटि तक पहुँच जाता है तब होता है: ब्लॉक लंबाई इसके पूरक के साथ मेल नहीं खाता।
ऐसा क्यों?
फ़ाइल की सामग्री के बारे में मैं पढ़ने की कोशिश कर रहा हूं ... यह बाइनरी है और इसे गिट निष्पादन योग्य द्वारा बनाया गया था। मूल फ़ाइल नाम testfile.txt
है, इसकी सामग्री Sample text.
है SHA1 51d0be227ecdc0039698122a1513421ce35c1dbe
है।
किसी भी विचार की सराहना की जाएगी!
धन्यवाद, यह वास्तव में सहायक था! – shytikov