Просмотр исходного кода

Revert "Quickfix for AutoCRLF handling"

This reverts commit 88fe2836ed.

Auto CRLF isn't special enough to be screwing around with the buffers
used for raw byte processing of the ObjectInserter API. If it needs a
buffer to process a file that is bigger than the buffer allocated by
an ObjectInserter, it needs to do its own buffer management.

Change-Id: Ida4aaa80d0f9f78035f3d2a9ebdde904c980f89a
tags/v2.0.0.201206130900-r
Shawn O. Pearce 12 лет назад
Родитель
Сommit
ff13648ea2

+ 1
- 30
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java Просмотреть файл

} }


@Test @Test
public void testAddExistingSingleSmallFileWithNewLine() throws IOException,
public void testAddExistingSingleFileWithNewLine() throws IOException,
NoFilepatternException { NoFilepatternException {
File file = new File(db.getWorkTree(), "a.txt"); File file = new File(db.getWorkTree(), "a.txt");
FileUtils.createNewFile(file); FileUtils.createNewFile(file);
indexState(CONTENT)); indexState(CONTENT));
} }


@Test
public void testAddExistingSingleMediumSizeFileWithNewLine()
throws IOException, NoFilepatternException {
File file = new File(db.getWorkTree(), "a.txt");
FileUtils.createNewFile(file);
StringBuilder data = new StringBuilder();
for (int i = 0; i < 1000; ++i) {
data.append("row1\r\nrow2");
}
String crData = data.toString();
PrintWriter writer = new PrintWriter(file);
writer.print(crData);
writer.close();
String lfData = data.toString().replaceAll("\r", "");
Git git = new Git(db);
db.getConfig().setString("core", null, "autocrlf", "false");
git.add().addFilepattern("a.txt").call();
assertEquals("[a.txt, mode:100644, content:" + data + "]",
indexState(CONTENT));
db.getConfig().setString("core", null, "autocrlf", "true");
git.add().addFilepattern("a.txt").call();
assertEquals("[a.txt, mode:100644, content:" + lfData + "]",
indexState(CONTENT));
db.getConfig().setString("core", null, "autocrlf", "input");
git.add().addFilepattern("a.txt").call();
assertEquals("[a.txt, mode:100644, content:" + lfData + "]",
indexState(CONTENT));
}

@Test @Test
public void testAddExistingSingleBinaryFile() throws IOException, public void testAddExistingSingleBinaryFile() throws IOException,
NoFilepatternException { NoFilepatternException {

+ 1
- 24
org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectInserter.java Просмотреть файл

return tempBuffer; return tempBuffer;
} }


static private final int tempBufSize;
static {
String s = System.getProperty("jgit.tempbufmaxsize");
if (s != null)
tempBufSize = Integer.parseInt(s);
else
tempBufSize = 1000000;
}

/**
* @param hintSize
* @return a temporary byte array for use by the caller
*/
protected byte[] buffer(long hintSize) {
if (hintSize >= tempBufSize)
tempBuffer = new byte[0];
else if (tempBuffer == null)
tempBuffer = new byte[(int) hintSize];
else if (tempBuffer.length < hintSize)
tempBuffer = new byte[(int) hintSize];
return tempBuffer;
}

/** @return digest to help compute an ObjectId */ /** @return digest to help compute an ObjectId */
protected MessageDigest digest() { protected MessageDigest digest() {
digest.reset(); digest.reset();
md.update((byte) ' '); md.update((byte) ' ');
md.update(Constants.encodeASCII(length)); md.update(Constants.encodeASCII(length));
md.update((byte) 0); md.update((byte) 0);
byte[] buf = buffer(length);
byte[] buf = buffer();
while (length > 0) { while (length > 0) {
int n = in.read(buf, 0, (int) Math.min(length, buf.length)); int n = in.read(buf, 0, (int) Math.min(length, buf.length));
if (n < 0) if (n < 0)

+ 1
- 1
org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsInserter.java Просмотреть файл

@Override @Override
public ObjectId insert(int type, long len, InputStream in) public ObjectId insert(int type, long len, InputStream in)
throws IOException { throws IOException {
byte[] buf = buffer(len);
byte[] buf = buffer();
if (len <= buf.length) { if (len <= buf.length) {
IO.readFully(in, buf, 0, (int) len); IO.readFully(in, buf, 0, (int) len);
return insert(type, buf, 0, (int) len); return insert(type, buf, 0, (int) len);

+ 2
- 2
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java Просмотреть файл

@Override @Override
public ObjectId insert(final int type, long len, final InputStream is) public ObjectId insert(final int type, long len, final InputStream is)
throws IOException { throws IOException {
byte[] buf = buffer(len);
if (len <= buf.length) {
if (len <= buffer().length) {
byte[] buf = buffer();
int actLen = IO.readFully(is, buf, 0); int actLen = IO.readFully(is, buf, 0);
return insert(type, buf, 0, actLen); return insert(type, buf, 0, actLen);



Загрузка…
Отмена
Сохранить