[GSoC] [PATCH v5 0/9] submodule: convert the rest of 'add' to C
- From
Atharva Raykar <raykar.ath@gmail.com>
- Date
- Aug 10, 2021, 11:46 UTC
- Message-ID
- <20210810114641.27188-1-raykar.ath@gmail.com>
- In-Reply-To
- <20210807071613.99610-1-raykar.ath@gmail.com>
NOTE: This series uses (ar/submodule-add-config): https://lore.kernel.org/git/20210806140431.92018-1-raykar.ath@gmail.com/
Since v4: * Rename a local variable in 'compute_submodule_clone_url()' to reduce ambiguity. * Add a new patch that renames 'compute_submodule_clone_url()' to 'resolve_relative_url()' to better convey its use. We add it at the end after the 'resolve-relative-url' subcommand is removed so that there is no confusion as to what that function name binds to. * Fix incorrect example in the docstring for 'git_url_basename()'. Also add another example for more clarity.
Also since this query of mine got buried in the revisions, I shall include it here again:
Questions about the cache API used in [PATCH 5/9]:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. What is the difference between 'read_cache()' and 'read_cache_preload()'?
From what I can tell, the latter optimistically preloads the index stat
data. Is there any reason to use 'read_cache()' over
'read_cache_preload()'?
2. Which one is more appropriate for use in 'die_on_index_match()'?Fetch-it-Via: git fetch https://github.com/tfidfwastaken/git submodule-helper-add-list-5
Atharva Raykar (9): submodule--helper: add options for compute_submodule_clone_url() submodule--helper: refactor resolve_relative_url() helper submodule--helper: remove repeated code in sync_submodule() dir: libify and export helper functions from clone.c submodule--helper: convert the bulk of cmd_add() to C submodule--helper: remove add-clone subcommand submodule--helper: remove add-config subcommand submodule--helper: remove resolve-relative-url subcommand submodule--helper: rename compute_submodule_clone_url()
builtin/clone.c | 118 +------------- builtin/submodule--helper.c | 307 +++++++++++++++++++----------------- dir.c | 114 +++++++++++++ dir.h | 11 ++ git-submodule.sh | 96 +---------- 5 files changed, 291 insertions(+), 355 deletions(-)
Range-diff against v4:
1: 75edf24186 ! 1: 78e19c4b01 submodule--helper: add options for compute_submodule_clone_url()
@@ Commit message
`resolve_relative_url()` by using this function, something we will do in
the next patch.
+ We also rename the local variable 'relurl' to avoid potential confusion
+ with the 'rel_url' parameter while we are at it.
+
Having this functionality factored out will be useful for converting the
rest of `submodule add` in subsequent patches.
@@ builtin/submodule--helper.c: static int module_foreach(int argc, const char **ar
-static char *compute_submodule_clone_url(const char *rel_url)
+static char *compute_submodule_clone_url(const char *rel_url, const char *up_path, int quiet)
{
- char *remoteurl, *relurl;
+- char *remoteurl, *relurl;
++ char *remoteurl, *resolved_url;
char *remote = get_default_remote();
-@@ builtin/submodule--helper.c: static char *compute_submodule_clone_url(const char *rel_url)
+ struct strbuf remotesb = STRBUF_INIT;
strbuf_addf(&remotesb, "remote.%s.url", remote);
if (git_config_get_string(remotesb.buf, &remoteurl)) {
@@ builtin/submodule--helper.c: static char *compute_submodule_clone_url(const char
remoteurl = xgetcwd();
}
- relurl = relative_url(remoteurl, rel_url, NULL);
-+ relurl = relative_url(remoteurl, rel_url, up_path);
++ resolved_url = relative_url(remoteurl, rel_url, up_path);
free(remote);
free(remoteurl);
+ strbuf_release(&remotesb);
+
+- return relurl;
++ return resolved_url;
+ }
+
+ struct init_cb {
@@ builtin/submodule--helper.c: static void init_submodule(const char *path, const char *prefix,
if (starts_with_dot_dot_slash(url) ||
starts_with_dot_slash(url)) {
2: 8e7a3e727a ! 2: faadf74ec1 submodule--helper: refactor resolve_relative_url() helper
@@ builtin/submodule--helper.c: static char *relative_url(const char *remote_url,
+static char *compute_submodule_clone_url(const char *rel_url, const char *up_path, int quiet)
{
- char *remoteurl = NULL;
-+ char *remoteurl, *relurl;
++ char *remoteurl, *resolved_url;
char *remote = get_default_remote();
+ struct strbuf remotesb = STRBUF_INIT;
+
@@ builtin/submodule--helper.c: static char *relative_url(const char *remote_url,
+ remotesb.buf);
+ remoteurl = xgetcwd();
+ }
-+ relurl = relative_url(remoteurl, rel_url, up_path);
++ resolved_url = relative_url(remoteurl, rel_url, up_path);
+
+ free(remote);
+ free(remoteurl);
+ strbuf_release(&remotesb);
+
-+ return relurl;
++ return resolved_url;
+}
+
+static int resolve_relative_url(int argc, const char **argv, const char *prefix)
@@ builtin/submodule--helper.c: static int module_foreach(int argc, const char **ar
-static char *compute_submodule_clone_url(const char *rel_url, const char *up_path, int quiet)
-{
-- char *remoteurl, *relurl;
+- char *remoteurl, *resolved_url;
- char *remote = get_default_remote();
- struct strbuf remotesb = STRBUF_INIT;
-
@@ builtin/submodule--helper.c: static int module_foreach(int argc, const char **ar
- remotesb.buf);
- remoteurl = xgetcwd();
- }
-- relurl = relative_url(remoteurl, rel_url, up_path);
+- resolved_url = relative_url(remoteurl, rel_url, up_path);
-
- free(remote);
- free(remoteurl);
- strbuf_release(&remotesb);
-
-- return relurl;
+- return resolved_url;
-}
-
struct init_cb {
3: 82961ddd02 = 3: d2127bd09a submodule--helper: remove repeated code in sync_submodule()
4: fa97d6801e ! 4: 4b05f93def dir: libify and export helper functions from clone.c
@@ dir.h: static inline int is_dot_or_dotdot(const char *name)
+ *
+ * For example:
+ * /path/to/repo.git => "repo"
-+ * host.xz.foo/.git => "foo"
++ * host.xz:foo/.git => "foo"
++ * http://example.com/user/bar.baz => "bar.baz"
+ */
+char *git_url_basename(const char *repo, int is_bundle, int is_bare);
+void strip_dir_trailing_slashes(char *dir);
5: a3aa25518d = 5: 1491a011b0 submodule--helper: convert the bulk of cmd_add() to C
6: 9667159d4b = 6: 5d5d07a6ba submodule--helper: remove add-clone subcommand
7: dc87b5627a = 7: 0ea27c2a15 submodule--helper: remove add-config subcommand
8: ea08e4fbad ! 8: 6bd2571f73 submodule--helper: remove resolve-relative-url subcommand
@@ Commit message
## builtin/submodule--helper.c ##
@@ builtin/submodule--helper.c: static char *compute_submodule_clone_url(const char *rel_url, const char *up_pat
- return relurl;
+ return resolved_url;
}
-static int resolve_relative_url(int argc, const char **argv, const char *prefix)
-: ---------- > 9: 14a05a0c1d submodule--helper: rename compute_submodule_clone_url()-- 2.32.0