Browse Source

Merge "Ensure EOL stream type is DIRECT when -text attribute is present"

stable-4.9
Christian Halstrick 7 years ago committed by Gerrit Code Review @ Eclipse.org
parent
commit
196915dde5
  1. 15
      org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java
  2. 16
      org.eclipse.jgit/src/org/eclipse/jgit/util/io/EolStreamTypeUtil.java

15
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java

@ -302,6 +302,21 @@ public class AddCommandTest extends RepositoryTestCase {
} }
} }
@Test
public void testAttributesConflictingMatch() throws Exception {
writeTrashFile(".gitattributes", "foo/** crlf=input\n*.jar binary");
writeTrashFile("foo/bar.jar", "\r\n");
// We end up with attributes [binary -diff -merge -text crlf=input].
// crlf should have no effect when -text is present.
try (Git git = new Git(db)) {
git.add().addFilepattern(".").call();
assertEquals(
"[.gitattributes, mode:100644, content:foo/** crlf=input\n*.jar binary]"
+ "[foo/bar.jar, mode:100644, content:\r\n]",
indexState(CONTENT));
}
}
@Test @Test
public void testCleanFilterEnvironment() public void testCleanFilterEnvironment()
throws IOException, GitAPIException { throws IOException, GitAPIException {

16
org.eclipse.jgit/src/org/eclipse/jgit/util/io/EolStreamTypeUtil.java

@ -144,6 +144,11 @@ public final class EolStreamTypeUtil {
private static EolStreamType checkInStreamType(WorkingTreeOptions options, private static EolStreamType checkInStreamType(WorkingTreeOptions options,
Attributes attrs) { Attributes attrs) {
if (attrs.isUnset("text")) {//$NON-NLS-1$
// "binary" or "-text" (which is included in the binary expansion)
return EolStreamType.DIRECT;
}
// old git system // old git system
if (attrs.isSet("crlf")) {//$NON-NLS-1$ if (attrs.isSet("crlf")) {//$NON-NLS-1$
return EolStreamType.TEXT_LF; return EolStreamType.TEXT_LF;
@ -154,9 +159,6 @@ public final class EolStreamTypeUtil {
} }
// new git system // new git system
if (attrs.isUnset("text")) {//$NON-NLS-1$
return EolStreamType.DIRECT;
}
String eol = attrs.getValue("eol"); //$NON-NLS-1$ String eol = attrs.getValue("eol"); //$NON-NLS-1$
if (eol != null) if (eol != null)
// check-in is always normalized to LF // check-in is always normalized to LF
@ -183,6 +185,11 @@ public final class EolStreamTypeUtil {
private static EolStreamType checkOutStreamType(WorkingTreeOptions options, private static EolStreamType checkOutStreamType(WorkingTreeOptions options,
Attributes attrs) { Attributes attrs) {
if (attrs.isUnset("text")) {//$NON-NLS-1$
// "binary" or "-text" (which is included in the binary expansion)
return EolStreamType.DIRECT;
}
// old git system // old git system
if (attrs.isSet("crlf")) {//$NON-NLS-1$ if (attrs.isSet("crlf")) {//$NON-NLS-1$
return FORCE_EOL_LF_ON_CHECKOUT ? EolStreamType.TEXT_LF return FORCE_EOL_LF_ON_CHECKOUT ? EolStreamType.TEXT_LF
@ -194,9 +201,6 @@ public final class EolStreamTypeUtil {
} }
// new git system // new git system
if (attrs.isUnset("text")) {//$NON-NLS-1$
return EolStreamType.DIRECT;
}
String eol = attrs.getValue("eol"); //$NON-NLS-1$ String eol = attrs.getValue("eol"); //$NON-NLS-1$
if (eol != null && "crlf".equals(eol)) //$NON-NLS-1$ if (eol != null && "crlf".equals(eol)) //$NON-NLS-1$
return EolStreamType.TEXT_CRLF; return EolStreamType.TEXT_CRLF;

Loading…
Cancel
Save