git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[GSoC] [PATCH v3 0/8] submodule: convert the rest of 'add' to C

From
Atharva Raykar <raykar.ath@gmail.com>
Date
Aug 6, 2021, 12:01 UTC
Message-ID
<20210806120147.73349-1-raykar.ath@gmail.com>
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
Previous: Atharva RaykarNext: Atharva Raykar
Message 35 of 78 in “submodule: convert the rest of 'add' to C”
  1. Atharva RaykarAug 5, 2021
  2. [GSoC] [PATCH 1/8] submodule--helper: refactor resolve_relative_url() helperAtharva Raykar, Aug 5, 2021
  3. [GSoC] [PATCH 2/8] submodule--helper: remove repeated code in sync_submodule()Atharva Raykar, Aug 5, 2021
  4. Đoàn Trần Công DanhAug 6, 2021
  5. Christian CouderAug 6, 2021
  6. Atharva RaykarAug 6, 2021
  7. Junio C HamanoAug 6, 2021
  8. [GSoC] [PATCH 3/8] dir: libify and export helper functions from clone.cAtharva Raykar, Aug 5, 2021
  9. [GSoC] [PATCH 4/8] submodule--helper: remove constness of sm_pathAtharva Raykar, Aug 5, 2021
  10. [GSoC] [PATCH 5/8] submodule--helper: convert the bulk of cmd_add() to CAtharva Raykar, Aug 5, 2021
  11. [GSoC] [PATCH 6/8] submodule--helper: remove add-clone subcommandAtharva Raykar, Aug 5, 2021
  12. [GSoC] [PATCH 8/8] submodule--helper: remove resolve-relative-url subcommandAtharva Raykar, Aug 5, 2021
  13. [GSoC] [PATCH 7/8] submodule--helper: remove add-config subcommandAtharva Raykar, Aug 5, 2021
  14. [GSoC] [PATCH v2 0/9] submodule: convert the rest of 'add' to CAtharva Raykar, Aug 5, 2021
  15. [GSoC] [PATCH v2 1/9] submodule--helper: add options for compute_submodule_clone_url()Atharva Raykar, Aug 5, 2021
  16. Junio C HamanoAug 5, 2021
  17. [GSoC] [PATCH v2 2/9] submodule--helper: refactor resolve_relative_url() helperAtharva Raykar, Aug 5, 2021
  18. Junio C HamanoAug 5, 2021
  19. [GSoC] [PATCH v2 3/9] submodule--helper: remove repeated code in sync_submodule()Atharva Raykar, Aug 5, 2021
  20. Junio C HamanoAug 5, 2021
  21. [GSoC] [PATCH v2 4/9] dir: libify and export helper functions from clone.cAtharva Raykar, Aug 5, 2021
  22. Junio C HamanoAug 5, 2021
  23. Atharva RaykarAug 6, 2021
  24. Junio C HamanoAug 6, 2021
  25. Atharva RaykarAug 7, 2021
  26. [GSoC] [PATCH v2 5/9] submodule--helper: remove constness of sm_pathAtharva Raykar, Aug 5, 2021
  27. Junio C HamanoAug 5, 2021
  28. Atharva RaykarAug 6, 2021
  29. [GSoC] [PATCH v2 6/9] submodule--helper: convert the bulk of cmd_add() to CAtharva Raykar, Aug 5, 2021
  30. Đoàn Trần Công DanhAug 6, 2021
  31. Atharva RaykarAug 6, 2021
  32. [GSoC] [PATCH v2 7/9] submodule--helper: remove add-clone subcommandAtharva Raykar, Aug 5, 2021
  33. [GSoC] [PATCH v2 8/9] submodule--helper: remove add-config subcommandAtharva Raykar, Aug 5, 2021
  34. [GSoC] [PATCH v2 9/9] submodule--helper: remove resolve-relative-url subcommandAtharva Raykar, Aug 5, 2021
  35. [GSoC] [PATCH v3 0/8] submodule: convert the rest of 'add' to CAtharva Raykar, Aug 6, 2021
  36. [GSoC] [PATCH v3 1/8] submodule--helper: add options for compute_submodule_clone_url()Atharva Raykar, Aug 6, 2021
  37. [GSoC] [PATCH v3 2/8] submodule--helper: refactor resolve_relative_url() helperAtharva Raykar, Aug 6, 2021
  38. [GSoC] [PATCH v3 3/8] submodule--helper: remove repeated code in sync_submodule()Atharva Raykar, Aug 6, 2021
  39. [GSoC] [PATCH v3 4/8] dir: libify and export helper functions from clone.cAtharva Raykar, Aug 6, 2021
  40. [GSoC] [PATCH v3 5/8] submodule--helper: convert the bulk of cmd_add() to CAtharva Raykar, Aug 6, 2021
  41. [GSoC] [PATCH v3 6/8] submodule--helper: remove add-clone subcommandAtharva Raykar, Aug 6, 2021
  42. [GSoC] [PATCH v3 7/8] submodule--helper: remove add-config subcommandAtharva Raykar, Aug 6, 2021
  43. [GSoC] [PATCH v3 8/8] submodule--helper: remove resolve-relative-url subcommandAtharva Raykar, Aug 6, 2021
  44. [GSoC] [PATCH v4 0/8] submodule: convert the rest of 'add' to CAtharva Raykar, Aug 7, 2021
  45. [GSoC] [PATCH v4 1/8] submodule--helper: add options for compute_submodule_clone_url()Atharva Raykar, Aug 7, 2021
  46. Kaartic SivaraamAug 8, 2021
  47. Kaartic SivaraamAug 8, 2021
  48. Atharva RaykarAug 9, 2021
  49. Atharva RaykarAug 9, 2021
  50. Kaartic SivaraamAug 10, 2021
  51. [GSoC] [PATCH v4 2/8] submodule--helper: refactor resolve_relative_url() helperAtharva Raykar, Aug 7, 2021
  52. [GSoC] [PATCH v4 3/8] submodule--helper: remove repeated code in sync_submodule()Atharva Raykar, Aug 7, 2021
  53. Kaartic SivaraamAug 8, 2021
  54. Atharva RaykarAug 9, 2021
  55. [GSoC] [PATCH v4 4/8] dir: libify and export helper functions from clone.cAtharva Raykar, Aug 7, 2021
  56. Kaartic SivaraamAug 8, 2021
  57. Atharva RaykarAug 9, 2021
  58. Kaartic SivaraamAug 10, 2021
  59. Junio C HamanoAug 10, 2021
  60. Atharva RaykarAug 11, 2021
  61. [GSoC] [PATCH v4 5/8] submodule--helper: convert the bulk of cmd_add() to CAtharva Raykar, Aug 7, 2021
  62. [GSoC] [PATCH v4 6/8] submodule--helper: remove add-clone subcommandAtharva Raykar, Aug 7, 2021
  63. [GSoC] [PATCH v4 7/8] submodule--helper: remove add-config subcommandAtharva Raykar, Aug 7, 2021
  64. [GSoC] [PATCH v4 8/8] submodule--helper: remove resolve-relative-url subcommandAtharva Raykar, Aug 7, 2021
  65. Kaartic SivaraamAug 8, 2021
  66. [GSoC] [PATCH v5 0/9] submodule: convert the rest of 'add' to CAtharva Raykar, Aug 10, 2021
  67. [GSoC] [PATCH v5 1/9] submodule--helper: add options for compute_submodule_clone_url()Atharva Raykar, Aug 10, 2021
  68. Bagas SanjayaAug 11, 2021
  69. Atharva RaykarAug 11, 2021
  70. [GSoC] [PATCH v5 3/9] submodule--helper: remove repeated code in sync_submodule()Atharva Raykar, Aug 10, 2021
  71. [GSoC] [PATCH v5 2/9] submodule--helper: refactor resolve_relative_url() helperAtharva Raykar, Aug 10, 2021
  72. [GSoC] [PATCH v5 4/9] dir: libify and export helper functions from clone.cAtharva Raykar, Aug 10, 2021
  73. [GSoC] [PATCH v5 5/9] submodule--helper: convert the bulk of cmd_add() to CAtharva Raykar, Aug 10, 2021
  74. [GSoC] [PATCH v5 6/9] submodule--helper: remove add-clone subcommandAtharva Raykar, Aug 10, 2021
  75. [GSoC] [PATCH v5 9/9] submodule--helper: rename compute_submodule_clone_url()Atharva Raykar, Aug 10, 2021
  76. [GSoC] [PATCH v5 8/9] submodule--helper: remove resolve-relative-url subcommandAtharva Raykar, Aug 10, 2021
  77. [GSoC] [PATCH v5 7/9] submodule--helper: remove add-config subcommandAtharva Raykar, Aug 10, 2021
  78. Junio C HamanoSep 8, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.