]> source.dussan.org Git - jgit.git/commitdiff
Use submodule name instead of path as key in config 07/110407/4
authorDavid Turner <dturner@twosigma.com>
Thu, 19 Oct 2017 20:58:07 +0000 (16:58 -0400)
committerMatthias Sohn <matthias.sohn@sap.com>
Wed, 27 Dec 2017 21:55:54 +0000 (22:55 +0100)
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>
org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleInitCommand.java
org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
org.eclipse.jgit/src/org/eclipse/jgit/submodule/SubmoduleWalk.java

index dacdd054284f43d79c185b2872cc9a4568f24366..f626724c4edc1b443f9574c889d2e6e67c2c1b4f 100644 (file)
@@ -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.
index acca02983503e130210146dab142df5c8251164b..6af27d704c1e15d050857d9c5eb53520390814c5 100644 (file)
@@ -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);
                        }
index 836312276518c283e5327a1daf96b9fd5629c7c5..5241ea2328832c25bfae6efa9b9604605d7861fa 100644 (file)
@@ -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;
index 1d970db94860ad241fa7447575acbc608c0eda28..0e4cd904cd216b46f32e2bf0b3f285e11d4939e6 100644 (file)
@@ -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);
        }