From: Atharva Raykar <raykar.ath@gmail.com>
To: raykar.ath@gmail.com
Cc: avarab@gmail.com, christian.couder@gmail.com,
congdanhqx@gmail.com, emilyshaffer@google.com,
git@vger.kernel.org, gitster@pobox.com, jrnieder@gmail.com,
kaartic.sivaraam@gmail.com, pc44800@gmail.com,
periperidip@gmail.com, rafaeloliveira.cs@gmail.com,
sunshine@sunshineco.com
Subject: [GSoC] [PATCH v3 0/8] submodule: convert the rest of 'add' to C
Date: Fri, 6 Aug 2021 17:31:39 +0530 [thread overview]
Message-ID: <20210806120147.73349-1-raykar.ath@gmail.com> (raw)
In-Reply-To: <20210805074054.29916-1-raykar.ath@gmail.com>
Changes since v2:
* Mention the small overhead introduced in [2/8] in the commit message.
* Attempt a more descriptive name for the libified dir helper. Add a docstring
to explain it as well.
* Combine the "unconstification of sm_path" patch into the next one.
Atharva Raykar (8):
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
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 v2:
-: ---------- > 1: 75edf24186 submodule--helper: add options for compute_submodule_clone_url()
-: ---------- > 2: 8e7a3e727a submodule--helper: refactor resolve_relative_url() helper
1: d8ee0bc450 ! 3: 82961ddd02 submodule--helper: remove repeated code in sync_submodule()
@@ Commit message
This part of `sync_submodule()` is doing the same thing that
`compute_submodule_clone_url()` is doing. Let's reuse that helper here.
+ Note that this change adds a small overhead where we allocate and free
+ the 'remote' twice, but that is a small price to pay for the higher
+ level of abstraction we get.
+
Signed-off-by: Atharva Raykar <raykar.ath@gmail.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Shourya Shukla <periperidip@gmail.com>
2: 6ac470d86f ! 4: 99d139375d dir: libify and export helper functions from clone.c
@@ Commit message
Signed-off-by: Atharva Raykar <raykar.ath@gmail.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
- Mentored-by: Shourya Shukla <shouryashukla.oo@gmail.com>
+ Mentored-by: Shourya Shukla <periperidip@gmail.com>
## builtin/clone.c ##
@@ builtin/clone.c: static char *get_repo_path(const char *repo, int *is_bundle)
@@ builtin/clone.c: int cmd_clone(int argc, const char **argv, const char *prefix)
else
- dir = guess_dir_name(repo_name, is_bundle, option_bare);
- strip_trailing_slashes(dir);
-+ dir = guess_dir_name_from_git_url(repo_name, is_bundle, option_bare);
++ dir = guess_target_dir_from_git_url(repo_name, is_bundle, option_bare);
+ strip_dir_trailing_slashes(dir);
dest_exists = path_exists(dir);
@@ dir.c: int is_empty_dir(const char *path)
return ret;
}
-+char *guess_dir_name_from_git_url(const char *repo, int is_bundle, int is_bare)
++char *guess_target_dir_from_git_url(const char *repo, int is_bundle, int is_bare)
+{
+ const char *end = repo + strlen(repo), *start, *ptr;
+ size_t len;
@@ dir.h: static inline int is_dot_or_dotdot(const char *name)
int is_empty_dir(const char *dir);
-+char *guess_dir_name_from_git_url(const char *repo, int is_bundle, int is_bare);
++/*
++ * Retrieve a target directory name by reading "humanish" part of the
++ * given Git URL.
++ *
++ * For example:
++ * /path/to/repo.git => "repo"
++ * host.xz.foo/.git => "foo"
++ */
++char *guess_target_dir_from_git_url(const char *repo, int is_bundle, int is_bare);
+void strip_dir_trailing_slashes(char *dir);
+
void setup_standard_excludes(struct dir_struct *dir);
3: c0b264a4e8 < -: ---------- submodule--helper: remove constness of sm_path
4: f61124327f ! 5: 11eea777ba submodule--helper: convert the bulk of cmd_add() to C
@@ Commit message
Introduce the 'add' subcommand to `submodule--helper.c` that does all
the work 'submodule add' past the parsing of flags.
+ We also remove the constness of the sm_path field of the `add_data`
+ struct. This is needed so that it can be modified by
+ normalize_path_copy().
+
As with the previous conversions, this is meant to be a faithful
conversion with no modification to the behaviour of `submodule add`.
@@ Commit message
Based-on-patch-by: Prathamesh Chavan <pc44800@gmail.com>
## builtin/submodule--helper.c ##
+@@ builtin/submodule--helper.c: struct add_data {
+ const char *prefix;
+ const char *branch;
+ const char *reference_path;
+- const char *sm_path;
++ char *sm_path;
+ const char *sm_name;
+ const char *repo;
+ const char *realrepo;
@@ builtin/submodule--helper.c: static int add_config(int argc, const char **argv, const char *prefix)
return 0;
}
@@ builtin/submodule--helper.c: static int add_config(int argc, const char **argv,
+
+ add_data.repo = argv[0];
+ if (argc == 1)
-+ add_data.sm_path = guess_dir_name_from_git_url(add_data.repo, 0, 0);
++ add_data.sm_path = guess_target_dir_from_git_url(add_data.repo, 0, 0);
+ else
+ add_data.sm_path = xstrdup(argv[1]);
+
@@ builtin/submodule--helper.c: static int add_config(int argc, const char **argv,
+ if ((exit_code = pipe_command(&cp, NULL, 0, NULL, 0, &sb, 0))) {
+ strbuf_complete_line(&sb);
+ fputs(sb.buf, stderr);
++ free(add_data.sm_path);
+ return exit_code;
+ }
+ strbuf_release(&sb);
@@ builtin/submodule--helper.c: static int add_config(int argc, const char **argv,
+ add_data.progress = !!progress;
+ add_data.dissociate = !!dissociate;
+
-+ if (add_submodule(&add_data))
++ if (add_submodule(&add_data)) {
++ free(add_data.sm_path);
+ return 1;
++ }
+ configure_added_submodule(&add_data);
+ free(add_data.sm_path);
+
5: 0c37bf84c3 = 6: 51393cd99b submodule--helper: remove add-clone subcommand
6: d7e0db2565 = 7: 50cedcd8a8 submodule--helper: remove add-config subcommand
7: 6dd7cb1e18 = 8: 02558da532 submodule--helper: remove resolve-relative-url subcommand
--
2.32.0
next prev parent reply other threads:[~2021-08-06 12:02 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-05 7:19 [GSoC] [PATCH 0/8] submodule: convert the rest of 'add' to C Atharva Raykar
2021-08-05 7:19 ` [GSoC] [PATCH 1/8] submodule--helper: refactor resolve_relative_url() helper Atharva Raykar
2021-08-05 7:19 ` [GSoC] [PATCH 2/8] submodule--helper: remove repeated code in sync_submodule() Atharva Raykar
2021-08-06 0:53 ` Đoàn Trần Công Danh
2021-08-06 9:06 ` Christian Couder
2021-08-06 10:06 ` Atharva Raykar
2021-08-06 16:21 ` Junio C Hamano
2021-08-05 7:19 ` [GSoC] [PATCH 3/8] dir: libify and export helper functions from clone.c Atharva Raykar
2021-08-05 7:19 ` [GSoC] [PATCH 4/8] submodule--helper: remove constness of sm_path Atharva Raykar
2021-08-05 7:19 ` [GSoC] [PATCH 5/8] submodule--helper: convert the bulk of cmd_add() to C Atharva Raykar
2021-08-05 7:19 ` [GSoC] [PATCH 6/8] submodule--helper: remove add-clone subcommand Atharva Raykar
2021-08-05 7:19 ` [GSoC] [PATCH 7/8] submodule--helper: remove add-config subcommand Atharva Raykar
2021-08-05 7:19 ` [GSoC] [PATCH 8/8] submodule--helper: remove resolve-relative-url subcommand Atharva Raykar
2021-08-05 7:40 ` [GSoC] [PATCH v2 0/9] submodule: convert the rest of 'add' to C Atharva Raykar
2021-08-05 7:40 ` [GSoC] [PATCH v2 1/9] submodule--helper: add options for compute_submodule_clone_url() Atharva Raykar
2021-08-05 20:05 ` Junio C Hamano
2021-08-05 7:40 ` [GSoC] [PATCH v2 2/9] submodule--helper: refactor resolve_relative_url() helper Atharva Raykar
2021-08-05 20:13 ` Junio C Hamano
2021-08-05 7:40 ` [GSoC] [PATCH v2 3/9] submodule--helper: remove repeated code in sync_submodule() Atharva Raykar
2021-08-05 20:20 ` Junio C Hamano
2021-08-05 7:40 ` [GSoC] [PATCH v2 4/9] dir: libify and export helper functions from clone.c Atharva Raykar
2021-08-05 20:37 ` Junio C Hamano
2021-08-06 11:12 ` Atharva Raykar
2021-08-06 16:36 ` Junio C Hamano
2021-08-07 7:15 ` Atharva Raykar
2021-08-05 7:40 ` [GSoC] [PATCH v2 5/9] submodule--helper: remove constness of sm_path Atharva Raykar
2021-08-05 20:40 ` Junio C Hamano
2021-08-06 11:16 ` Atharva Raykar
2021-08-05 7:40 ` [GSoC] [PATCH v2 6/9] submodule--helper: convert the bulk of cmd_add() to C Atharva Raykar
2021-08-06 1:14 ` Đoàn Trần Công Danh
2021-08-06 11:33 ` Atharva Raykar
2021-08-05 7:40 ` [GSoC] [PATCH v2 7/9] submodule--helper: remove add-clone subcommand Atharva Raykar
2021-08-05 7:40 ` [GSoC] [PATCH v2 8/9] submodule--helper: remove add-config subcommand Atharva Raykar
2021-08-05 7:40 ` [GSoC] [PATCH v2 9/9] submodule--helper: remove resolve-relative-url subcommand Atharva Raykar
2021-08-06 12:01 ` Atharva Raykar [this message]
2021-08-06 12:01 ` [GSoC] [PATCH v3 1/8] submodule--helper: add options for compute_submodule_clone_url() Atharva Raykar
2021-08-06 12:01 ` [GSoC] [PATCH v3 2/8] submodule--helper: refactor resolve_relative_url() helper Atharva Raykar
2021-08-06 12:01 ` [GSoC] [PATCH v3 3/8] submodule--helper: remove repeated code in sync_submodule() Atharva Raykar
2021-08-06 12:01 ` [GSoC] [PATCH v3 4/8] dir: libify and export helper functions from clone.c Atharva Raykar
2021-08-06 12:01 ` [GSoC] [PATCH v3 5/8] submodule--helper: convert the bulk of cmd_add() to C Atharva Raykar
2021-08-06 12:01 ` [GSoC] [PATCH v3 6/8] submodule--helper: remove add-clone subcommand Atharva Raykar
2021-08-06 12:01 ` [GSoC] [PATCH v3 7/8] submodule--helper: remove add-config subcommand Atharva Raykar
2021-08-06 12:01 ` [GSoC] [PATCH v3 8/8] submodule--helper: remove resolve-relative-url subcommand Atharva Raykar
2021-08-07 7:16 ` [GSoC] [PATCH v4 0/8] submodule: convert the rest of 'add' to C Atharva Raykar
2021-08-07 7:16 ` [GSoC] [PATCH v4 1/8] submodule--helper: add options for compute_submodule_clone_url() Atharva Raykar
2021-08-08 17:41 ` Kaartic Sivaraam
2021-08-08 18:26 ` Kaartic Sivaraam
2021-08-09 7:29 ` Atharva Raykar
2021-08-09 8:47 ` Atharva Raykar
2021-08-10 17:36 ` Kaartic Sivaraam
2021-08-07 7:16 ` [GSoC] [PATCH v4 2/8] submodule--helper: refactor resolve_relative_url() helper Atharva Raykar
2021-08-07 7:16 ` [GSoC] [PATCH v4 3/8] submodule--helper: remove repeated code in sync_submodule() Atharva Raykar
2021-08-08 19:00 ` Kaartic Sivaraam
2021-08-09 7:36 ` Atharva Raykar
2021-08-07 7:16 ` [GSoC] [PATCH v4 4/8] dir: libify and export helper functions from clone.c Atharva Raykar
2021-08-08 19:23 ` Kaartic Sivaraam
2021-08-09 8:02 ` Atharva Raykar
2021-08-10 17:53 ` Kaartic Sivaraam
2021-08-10 21:27 ` Junio C Hamano
2021-08-11 10:25 ` Atharva Raykar
2021-08-07 7:16 ` [GSoC] [PATCH v4 5/8] submodule--helper: convert the bulk of cmd_add() to C Atharva Raykar
2021-08-07 7:16 ` [GSoC] [PATCH v4 6/8] submodule--helper: remove add-clone subcommand Atharva Raykar
2021-08-07 7:16 ` [GSoC] [PATCH v4 7/8] submodule--helper: remove add-config subcommand Atharva Raykar
2021-08-07 7:16 ` [GSoC] [PATCH v4 8/8] submodule--helper: remove resolve-relative-url subcommand Atharva Raykar
2021-08-08 18:01 ` [GSoC] [PATCH v4 0/8] submodule: convert the rest of 'add' to C Kaartic Sivaraam
2021-08-10 11:46 ` [GSoC] [PATCH v5 0/9] " Atharva Raykar
2021-08-10 11:46 ` [GSoC] [PATCH v5 1/9] submodule--helper: add options for compute_submodule_clone_url() Atharva Raykar
2021-08-11 6:44 ` Bagas Sanjaya
2021-08-11 10:30 ` Atharva Raykar
2021-08-10 11:46 ` [GSoC] [PATCH v5 2/9] submodule--helper: refactor resolve_relative_url() helper Atharva Raykar
2021-08-10 11:46 ` [GSoC] [PATCH v5 3/9] submodule--helper: remove repeated code in sync_submodule() Atharva Raykar
2021-08-10 11:46 ` [GSoC] [PATCH v5 4/9] dir: libify and export helper functions from clone.c Atharva Raykar
2021-08-10 11:46 ` [GSoC] [PATCH v5 5/9] submodule--helper: convert the bulk of cmd_add() to C Atharva Raykar
2021-08-10 11:46 ` [GSoC] [PATCH v5 6/9] submodule--helper: remove add-clone subcommand Atharva Raykar
2021-08-10 11:46 ` [GSoC] [PATCH v5 7/9] submodule--helper: remove add-config subcommand Atharva Raykar
2021-08-10 11:46 ` [GSoC] [PATCH v5 8/9] submodule--helper: remove resolve-relative-url subcommand Atharva Raykar
2021-08-10 11:46 ` [GSoC] [PATCH v5 9/9] submodule--helper: rename compute_submodule_clone_url() Atharva Raykar
2021-09-08 0:31 ` [GSoC] [PATCH v5 0/9] submodule: convert the rest of 'add' to C Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210806120147.73349-1-raykar.ath@gmail.com \
--to=raykar.ath@gmail.com \
--cc=avarab@gmail.com \
--cc=christian.couder@gmail.com \
--cc=congdanhqx@gmail.com \
--cc=emilyshaffer@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=kaartic.sivaraam@gmail.com \
--cc=pc44800@gmail.com \
--cc=periperidip@gmail.com \
--cc=rafaeloliveira.cs@gmail.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).