Quellcode durchsuchen

Add additional FastForwardMode enums for different config contexts

FastForwardMode should be represented by different enums depending on
context it is set or get from. E.g. FastForwardMode.FF_ONLY for
branch.<name>.mergeoptions is "--ff-only" but for merge.ff it is "only".

Change-Id: I3ecc16d48e715b81320b73ffae4caf3558f965f2
tags/v2.3.0.201302130906
Tomasz Zarna vor 11 Jahren
Ursprung
Commit
c98abc9c05

+ 77
- 2
org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java Datei anzeigen

@@ -63,6 +63,7 @@ import java.util.Iterator;
import java.util.LinkedList;
import java.util.Set;

import org.eclipse.jgit.api.MergeCommand.FastForwardMode;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.junit.MockSystemReader;
import org.eclipse.jgit.util.FS;
@@ -287,7 +288,7 @@ public class ConfigTest {
assertSame(CoreConfig.AutoCRLF.FALSE, c.getEnum("s", null, "d",
CoreConfig.AutoCRLF.FALSE));

c = parse("[s \"b\"]\n\tc = one two\n");
c = parse("[s \"b\"]\n\tc = one-two\n");
assertSame(TestEnum.ONE_TWO, c.getEnum("s", "b", "c", TestEnum.ONE_TWO));
}

@@ -295,7 +296,81 @@ public class ConfigTest {
public void testSetEnum() {
final Config c = new Config();
c.setEnum("s", "b", "c", TestEnum.ONE_TWO);
assertEquals("[s \"b\"]\n\tc = one two\n", c.toText());
assertEquals("[s \"b\"]\n\tc = one-two\n", c.toText());
}

@Test
public void testGetFastForwardMergeoptions() throws ConfigInvalidException {
Config c = new Config(null); // not set
assertSame(FastForwardMode.MergeOptions.__FF, c.getEnum(
ConfigConstants.CONFIG_BRANCH_SECTION, "side",
ConfigConstants.CONFIG_KEY_MERGEOPTIONS,
FastForwardMode.MergeOptions.__FF));
c = parse("[branch \"side\"]\n\tmergeoptions = --ff-only\n");
assertSame(FastForwardMode.MergeOptions.__FF_ONLY, c.getEnum(
ConfigConstants.CONFIG_BRANCH_SECTION, "side",
ConfigConstants.CONFIG_KEY_MERGEOPTIONS,
FastForwardMode.MergeOptions.__FF_ONLY));
c = parse("[branch \"side\"]\n\tmergeoptions = --ff\n");
assertSame(FastForwardMode.MergeOptions.__FF, c.getEnum(
ConfigConstants.CONFIG_BRANCH_SECTION, "side",
ConfigConstants.CONFIG_KEY_MERGEOPTIONS,
FastForwardMode.MergeOptions.__FF));
c = parse("[branch \"side\"]\n\tmergeoptions = --no-ff\n");
assertSame(FastForwardMode.MergeOptions.__NO_FF, c.getEnum(
ConfigConstants.CONFIG_BRANCH_SECTION, "side",
ConfigConstants.CONFIG_KEY_MERGEOPTIONS,
FastForwardMode.MergeOptions.__NO_FF));
}

@Test
public void testSetFastForwardMergeoptions() {
final Config c = new Config();
c.setEnum("branch", "side", "mergeoptions",
FastForwardMode.MergeOptions.valueOf(FastForwardMode.FF));
assertEquals("[branch \"side\"]\n\tmergeoptions = --ff\n", c.toText());
c.setEnum("branch", "side", "mergeoptions",
FastForwardMode.MergeOptions.valueOf(FastForwardMode.FF_ONLY));
assertEquals("[branch \"side\"]\n\tmergeoptions = --ff-only\n",
c.toText());
c.setEnum("branch", "side", "mergeoptions",
FastForwardMode.MergeOptions.valueOf(FastForwardMode.NO_FF));
assertEquals("[branch \"side\"]\n\tmergeoptions = --no-ff\n",
c.toText());
}

@Test
public void testGetFastForwardMerge() throws ConfigInvalidException {
Config c = new Config(null); // not set
assertSame(FastForwardMode.Merge.TRUE, c.getEnum(
ConfigConstants.CONFIG_KEY_MERGE, null,
ConfigConstants.CONFIG_KEY_FF, FastForwardMode.Merge.TRUE));
c = parse("[merge]\n\tff = only\n");
assertSame(FastForwardMode.Merge.ONLY, c.getEnum(
ConfigConstants.CONFIG_KEY_MERGE, null,
ConfigConstants.CONFIG_KEY_FF, FastForwardMode.Merge.ONLY));
c = parse("[merge]\n\tff = true\n");
assertSame(FastForwardMode.Merge.TRUE, c.getEnum(
ConfigConstants.CONFIG_KEY_MERGE, null,
ConfigConstants.CONFIG_KEY_FF, FastForwardMode.Merge.TRUE));
c = parse("[merge]\n\tff = false\n");
assertSame(FastForwardMode.Merge.FALSE, c.getEnum(
ConfigConstants.CONFIG_KEY_MERGE, null,
ConfigConstants.CONFIG_KEY_FF, FastForwardMode.Merge.FALSE));
}

@Test
public void testSetFastForwardMerge() {
final Config c = new Config();
c.setEnum("merge", null, "ff", FastForwardMode.Merge.valueOf(FastForwardMode.FF));
assertEquals("[merge]\n\tff = true\n", c.toText());
c.setEnum("merge", null, "ff",
FastForwardMode.Merge.valueOf(FastForwardMode.FF_ONLY));
assertEquals("[merge]\n\tff = only\n",
c.toText());
c.setEnum("merge", null, "ff",
FastForwardMode.Merge.valueOf(FastForwardMode.NO_FF));
assertEquals("[merge]\n\tff = false\n", c.toText());
}

@Test

+ 116
- 0
org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java Datei anzeigen

@@ -121,6 +121,122 @@ public class MergeCommand extends GitCommand<MergeResult> {
* forward).
*/
FF_ONLY;

/**
* The modes available for fast forward merges corresponding to the
* options under branch.<name>.branch config option.
*/
public enum MergeOptions {
/**
* {@link FastForwardMode#FF}.
*/
__FF,
/**
* {@link FastForwardMode#NO_FF}.
*/
__NO_FF,
/**
* {@link FastForwardMode#FF_ONLY}.
*/
__FF_ONLY;

/**
* Map from <code>FastForwardMode</code> to
* <code>FastForwardMode.MergeOptions</code>.
*
* @param ffMode
* the <code>FastForwardMode</code> value to be mapped
* @return the mapped code>FastForwardMode.MergeOptions</code> value
*/
public static MergeOptions valueOf(FastForwardMode ffMode) {
switch (ffMode) {
case NO_FF:
return __NO_FF;
case FF_ONLY:
return __FF_ONLY;
default:
return __FF;
}
}
}

/**
* The modes available for fast forward merges corresponding to the
* options under merge.ff config option.
*/
public enum Merge {
/**
* {@link FastForwardMode#FF}.
*/
TRUE,
/**
* {@link FastForwardMode#NO_FF}.
*/
FALSE,
/**
* {@link FastForwardMode#FF_ONLY}.
*/
ONLY;

/**
* Map from <code>FastForwardMode</code> to
* <code>FastForwardMode.Merge</code>.
*
* @param ffMode
* the <code>FastForwardMode</code> value to be mapped
* @return the mapped code>FastForwardMode.Merge</code> value
*/
public static Merge valueOf(FastForwardMode ffMode) {
switch (ffMode) {
case NO_FF:
return FALSE;
case FF_ONLY:
return ONLY;
default:
return TRUE;
}
}
}

/**
* Map from <code>FastForwardMode.Merge</code> to
* <code>FastForwardMode</code>.
*
* @param ffMode
* the <code>FastForwardMode.Merge</code> value to be mapped
* @return the mapped code>FastForwardMode</code> value
*/
public static FastForwardMode valueOf(FastForwardMode.Merge ffMode) {
switch (ffMode) {
case FALSE:
return NO_FF;
case ONLY:
return FF_ONLY;
default:
return FF;
}
}

/**
* Map from <code>FastForwardMode.MergeOptions</code> to
* <code>FastForwardMode</code>.
*
* @param ffMode
* the <code>FastForwardMode.MergeOptions</code> value to be
* mapped
* @return the mapped code>FastForwardMode</code> value
*/
public static FastForwardMode valueOf(
FastForwardMode.MergeOptions ffMode) {
switch (ffMode) {
case __NO_FF:
return NO_FF;
case __FF_ONLY:
return FF_ONLY;
default:
return FF;
}
}
}

/**

+ 2
- 2
org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java Datei anzeigen

@@ -387,7 +387,7 @@ public class Config {
if (value == null)
return defaultValue;

String n = value.replace(' ', '_');
String n = value.replace('-', '_');
T trueState = null;
T falseState = null;
for (T e : all) {
@@ -720,7 +720,7 @@ public class Config {
*/
public <T extends Enum<?>> void setEnum(final String section,
final String subsection, final String name, final T value) {
String n = value.name().toLowerCase().replace('_', ' ');
String n = value.name().toLowerCase().replace('_', '-');
setString(section, subsection, name, n);
}


+ 3
- 0
org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java Datei anzeigen

@@ -191,4 +191,7 @@ public class ConfigConstants {

/** The "mergeoptions" key */
public static final String CONFIG_KEY_MERGEOPTIONS = "mergeoptions";

/** The "ff" key */
public static final String CONFIG_KEY_FF = "ff";
}

Laden…
Abbrechen
Speichern