Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Pearce2014-11-25 04:51:07 +0000
committerShawn Pearce2014-11-25 19:21:27 +0000
commitb34ea11720eca6d6523e7948a929693146640daf (patch)
treee3d193379727538c24afc1c198729b1293246ad1
parent61b632ee5a915cb5e30676aab4349402bcd8196f (diff)
downloadjgit-b34ea11720eca6d6523e7948a929693146640daf.tar.gz
jgit-b34ea11720eca6d6523e7948a929693146640daf.tar.xz
jgit-b34ea11720eca6d6523e7948a929693146640daf.zip
Detect buffering failures while writing rebase todo file
By routing writes through SafeBufferedOutputStream the caller can be alerted to any flush at close failures while writing or appending to the rebase todo script. Switch the character encoding to be done at the line granularity, as this is sufficiently long enough that encoding overheads will not be a bottleneck, but short enough that the amount of temporary data will not cause memory problems for the JVM. Change-Id: Ice5ec10a7cbadc58486d481b92940056f9ffc43a
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java13
1 files changed, 6 insertions, 7 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java
index ef61e22032..4ebe5fedf3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java
@@ -43,17 +43,17 @@
package org.eclipse.jgit.lib;
-import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.OutputStreamWriter;
+import java.io.OutputStream;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.jgit.lib.RebaseTodoLine.Action;
import org.eclipse.jgit.util.IO;
import org.eclipse.jgit.util.RawParseUtils;
+import org.eclipse.jgit.util.io.SafeBufferedOutputStream;
/**
* Offers methods to read and write files formatted like the git-rebase-todo
@@ -216,9 +216,8 @@ public class RebaseTodoFile {
*/
public void writeRebaseTodoFile(String path, List<RebaseTodoLine> steps,
boolean append) throws IOException {
- BufferedWriter fw = new BufferedWriter(new OutputStreamWriter(
- new FileOutputStream(new File(repo.getDirectory(), path),
- append), Constants.CHARACTER_ENCODING));
+ OutputStream fw = new SafeBufferedOutputStream(new FileOutputStream(
+ new File(repo.getDirectory(), path), append));
try {
StringBuilder sb = new StringBuilder();
for (RebaseTodoLine step : steps) {
@@ -232,8 +231,8 @@ public class RebaseTodoFile {
sb.append(" "); //$NON-NLS-1$
sb.append(step.getShortMessage().trim());
}
- fw.write(sb.toString());
- fw.newLine();
+ sb.append('\n');
+ fw.write(Constants.encode(sb.toString()));
}
} finally {
fw.close();

Back to the top