Browse Source

Use submodule name instead of path as key in config

When a submodule is moved, the "name" field remains the same, while
the "path" field changes.  Git uses the "name" field in .git/config
when a submodule is initialized, so this patch makes JGit do so too.

Change-Id: I48d8e89f706447b860c0162822a8e68170aae42b
Signed-off-by: David Turner <dturner@twosigma.com>
stable-4.10
David Turner 7 years ago committed by Matthias Sohn
parent
commit
4bbc74ba40
  1. 1
      org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
  2. 5
      org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleInitCommand.java
  3. 1
      org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
  4. 25
      org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java

1
org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties

@ -457,6 +457,7 @@ noMergeBase=No merge base could be determined. Reason={0}. {1}
noMergeHeadSpecified=No merge head specified
nonBareLinkFilesNotSupported=Link files are not supported with nonbare repos
noSuchRef=no such ref
noSuchSubmodule=no such submodule {0}
notABoolean=Not a boolean: {0}
notABundle=not a bundle
notADIRCFile=Not a DIRC file.

5
org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleInitCommand.java

@ -110,16 +110,17 @@ public class SubmoduleInitCommand extends GitCommand<Collection<String>> {
continue;
String path = generator.getPath();
String name = generator.getModuleName();
// Copy 'url' and 'update' fields from .gitmodules to config
// file
String url = generator.getRemoteUrl();
String update = generator.getModulesUpdate();
if (url != null)
config.setString(ConfigConstants.CONFIG_SUBMODULE_SECTION,
path, ConfigConstants.CONFIG_KEY_URL, url);
name, ConfigConstants.CONFIG_KEY_URL, url);
if (update != null)
config.setString(ConfigConstants.CONFIG_SUBMODULE_SECTION,
path, ConfigConstants.CONFIG_KEY_UPDATE, update);
name, ConfigConstants.CONFIG_KEY_UPDATE, update);
if (url != null || update != null)
initialized.add(path);
}

1
org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java

@ -518,6 +518,7 @@ public class JGitText extends TranslationBundle {
/***/ public String noMergeHeadSpecified;
/***/ public String nonBareLinkFilesNotSupported;
/***/ public String noSuchRef;
/***/ public String noSuchSubmodule;
/***/ public String notABoolean;
/***/ public String notABundle;
/***/ public String notADIRCFile;

25
org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java

@ -616,6 +616,15 @@ public class SubmoduleWalk implements AutoCloseable {
return path;
}
/**
* The module name for the current submodule entry (used for the section name of .git/config)
* @since 4.10
* @return name
*/
public String getModuleName() {
return getModuleName(path);
}
/**
* Get object id of current submodule entry
*
@ -636,7 +645,7 @@ public class SubmoduleWalk implements AutoCloseable {
public String getModulesPath() throws IOException, ConfigInvalidException {
lazyLoadModulesConfig();
return modulesConfig.getString(ConfigConstants.CONFIG_SUBMODULE_SECTION,
getModuleName(path), ConfigConstants.CONFIG_KEY_PATH);
getModuleName(), ConfigConstants.CONFIG_KEY_PATH);
}
/**
@ -648,12 +657,8 @@ public class SubmoduleWalk implements AutoCloseable {
* @throws java.io.IOException
*/
public String getConfigUrl() throws IOException, ConfigInvalidException {
// SubmoduleInitCommand copies the submodules.*.url and
// submodules.*.update values from .gitmodules to the config, and
// does so using the path defined in .gitmodules as the subsection
// name. So no path-to-name translation is necessary here.
return repoConfig.getString(ConfigConstants.CONFIG_SUBMODULE_SECTION,
path, ConfigConstants.CONFIG_KEY_URL);
getModuleName(), ConfigConstants.CONFIG_KEY_URL);
}
/**
@ -667,7 +672,7 @@ public class SubmoduleWalk implements AutoCloseable {
public String getModulesUrl() throws IOException, ConfigInvalidException {
lazyLoadModulesConfig();
return modulesConfig.getString(ConfigConstants.CONFIG_SUBMODULE_SECTION,
getModuleName(path), ConfigConstants.CONFIG_KEY_URL);
getModuleName(), ConfigConstants.CONFIG_KEY_URL);
}
/**
@ -680,7 +685,7 @@ public class SubmoduleWalk implements AutoCloseable {
*/
public String getConfigUpdate() throws IOException, ConfigInvalidException {
return repoConfig.getString(ConfigConstants.CONFIG_SUBMODULE_SECTION,
path, ConfigConstants.CONFIG_KEY_UPDATE);
getModuleName(), ConfigConstants.CONFIG_KEY_UPDATE);
}
/**
@ -694,7 +699,7 @@ public class SubmoduleWalk implements AutoCloseable {
public String getModulesUpdate() throws IOException, ConfigInvalidException {
lazyLoadModulesConfig();
return modulesConfig.getString(ConfigConstants.CONFIG_SUBMODULE_SECTION,
getModuleName(path), ConfigConstants.CONFIG_KEY_UPDATE);
getModuleName(), ConfigConstants.CONFIG_KEY_UPDATE);
}
/**
@ -710,7 +715,7 @@ public class SubmoduleWalk implements AutoCloseable {
ConfigInvalidException {
lazyLoadModulesConfig();
return modulesConfig.getEnum(IgnoreSubmoduleMode.values(),
ConfigConstants.CONFIG_SUBMODULE_SECTION, getModuleName(path),
ConfigConstants.CONFIG_SUBMODULE_SECTION, getModuleName(),
ConfigConstants.CONFIG_KEY_IGNORE, IgnoreSubmoduleMode.NONE);
}

Loading…
Cancel
Save