private static byte[] GetPreviousRevision(GitFileStatusTracker tracker, string fileName) { byte[] cachedBytes = tracker.GetFileContent(fileName); if (cachedBytes == null) return cachedBytes; if (Environment.NewLine != "\r\n") return cachedBytes; WorkingTreeOptions options = tracker.Repository.GetConfig().Get(WorkingTreeOptions.KEY); if (options.GetAutoCRLF() != CoreConfig.AutoCRLF.TRUE) return cachedBytes; int lines = 0; for (int i = 0; i < cachedBytes.Length; i++) { if (cachedBytes[i] == '\n' && (i == 0 || cachedBytes[i - 1] != '\r')) lines++; } byte[] result = new byte[cachedBytes.Length + lines]; for (int i = 0, j = 0; i < cachedBytes.Length; i++) { byte current = cachedBytes[i]; if (current == '\n' && (i == 0 || cachedBytes[i - 1] != '\r')) result[j++] = (byte)'\r'; result[j++] = current; } return result; }
public void GetFileContentTestNegative() { GitFileStatusTracker tracker = new GitFileStatusTracker(tempFolder); var fileContent = tracker.GetFileContent(tempFile + ".bad"); Assert.IsNull(fileContent); GitFileStatusTracker.Init(tempFolder); File.WriteAllLines(tempFile, lines); tracker = new GitFileStatusTracker(tempFolder); fileContent = tracker.GetFileContent(tempFile + ".bad"); Assert.IsNull(fileContent); tracker.StageFile(tempFile); fileContent = tracker.GetFileContent(tempFile + ".bad"); Assert.IsNull(fileContent); tracker.Commit("中文 1čtestč"); fileContent = tracker.GetFileContent(tempFile + ".bad"); Assert.IsNull(fileContent); }
private static byte[] GetPreviousRevision(GitFileStatusTracker tracker, string fileName) { byte[] cachedBytes = tracker.GetFileContent(fileName); if (cachedBytes == null) { return(cachedBytes); } if (Environment.NewLine != "\r\n") { return(cachedBytes); } WorkingTreeOptions options = tracker.Repository.GetConfig().Get(WorkingTreeOptions.KEY); if (options.GetAutoCRLF() != CoreConfig.AutoCRLF.TRUE) { return(cachedBytes); } int lines = 0; for (int i = 0; i < cachedBytes.Length; i++) { if (cachedBytes[i] == '\n' && (i == 0 || cachedBytes[i - 1] != '\r')) { lines++; } } byte[] result = new byte[cachedBytes.Length + lines]; for (int i = 0, j = 0; i < cachedBytes.Length; i++) { byte current = cachedBytes[i]; if (current == '\n' && (i == 0 || cachedBytes[i - 1] != '\r')) { result[j++] = (byte)'\r'; } result[j++] = current; } return(result); }
public void GetFileContentTest() { GitFileStatusTracker.Init(tempFolder); File.WriteAllLines(tempFile, lines); GitFileStatusTracker tracker = new GitFileStatusTracker(tempFolder); tracker.StageFile(tempFile); tracker.Commit("中文 1čtestč"); var fileContent = tracker.GetFileContent(tempFile); using (var binWriter = new BinaryWriter(File.Open(tempFile + ".bk", System.IO.FileMode.Create))) { binWriter.Write(fileContent); } var newlines = File.ReadAllLines(tempFile + ".bk"); Assert.AreEqual(lines[0], newlines[0]); Assert.AreEqual(lines[1], newlines[1]); Assert.AreEqual(lines[2], newlines[2]); }