Browse Source

Set core.precomposeunicode to true when creating repository on Mac

Java has no option but to use precomposed Unicode, so we should
state that when creating a new repository. Not that Java will use
precomposed unicode regardless of this setting, but this reduces
the risk of incompatibility with C Git.

Change-Id: I3779b75f76d2e2061c836cbc9b4b7c2ae0cf18f4
stable-2.1
Robin Rosenberg 13 years ago
parent
commit
dccad56c9a
  1. 19
      org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/ConfigTest.java
  2. 3
      org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
  3. 4
      org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepository.java

19
org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/ConfigTest.java

@ -44,6 +44,9 @@ package org.eclipse.jgit.pgm;
import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertArrayEquals;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.lib.CLIRepositoryTestCase; import org.eclipse.jgit.lib.CLIRepositoryTestCase;
import org.eclipse.jgit.util.SystemReader; import org.eclipse.jgit.util.SystemReader;
@ -62,12 +65,18 @@ public class ConfigTest extends CLIRepositoryTestCase {
public void testListConfig() throws Exception { public void testListConfig() throws Exception {
boolean isWindows = SystemReader.getInstance().getProperty("os.name") boolean isWindows = SystemReader.getInstance().getProperty("os.name")
.startsWith("Windows"); .startsWith("Windows");
boolean isMac = SystemReader.getInstance().getProperty("os.name")
.equals("Mac OS X");
String[] output = execute("git config --list"); String[] output = execute("git config --list");
assertArrayEquals("expected default configuration", // List<String> expect = new ArrayList<String>();
new String[] { "core.filemode=" + !isWindows, // expect.add("core.filemode=" + !isWindows);
"core.logallrefupdates=true", // expect.add("core.logallrefupdates=true");
"core.repositoryformatversion=0", // if (isMac)
"" /* ends with LF (last line empty) */}, output); expect.add("core.precomposeunicode=true");
expect.add("core.repositoryformatversion=0");
expect.add(""); // ends with LF (last line empty)
assertArrayEquals("expected default configuration", expect.toArray(),
output);
} }
} }

3
org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java

@ -178,4 +178,7 @@ public class ConfigConstants {
/** The "indexversion" key */ /** The "indexversion" key */
public static final String CONFIG_KEY_INDEXVERSION = "indexversion"; public static final String CONFIG_KEY_INDEXVERSION = "indexversion";
/** The "precomposeunicode" key */
public static final String CONFIG_KEY_PRECOMPOSEUNICODE = "precomposeunicode";
} }

4
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepository.java

@ -280,6 +280,10 @@ public class FileRepository extends Repository {
ConfigConstants.CONFIG_KEY_BARE, true); ConfigConstants.CONFIG_KEY_BARE, true);
cfg.setBoolean(ConfigConstants.CONFIG_CORE_SECTION, null, cfg.setBoolean(ConfigConstants.CONFIG_CORE_SECTION, null,
ConfigConstants.CONFIG_KEY_LOGALLREFUPDATES, !bare); ConfigConstants.CONFIG_KEY_LOGALLREFUPDATES, !bare);
if (SystemReader.getInstance().isMacOS())
// Java has no other way
cfg.setBoolean(ConfigConstants.CONFIG_CORE_SECTION, null,
ConfigConstants.CONFIG_KEY_PRECOMPOSEUNICODE, true);
cfg.save(); cfg.save();
} }

Loading…
Cancel
Save