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

Re: [PATCH 0/6] submodule: improve remote lookup logic

From
Jacob Keller <jacob.e.keller@intel.com>
Date
Jun 16, 2025, 22:27 UTC
Message-ID
<f16e09e8-55f8-4fb7-825d-fe4c9b049d1c@intel.com>
In-Reply-To
<20250610-jk-submodule-helper-use-url-v1-0-6d14c1504e91@gmail.com>
On 6/10/2025 5:52 PM, Jacob Keller wrote:
Show 67 quoted lines
> This series improves the git submodule remote lookup logic implemented in
> submodule--helper.
> 
> A few cleanups are done first:
> 
> * The starts_with_dot(_dot)_slash helper functions are moved to dir.h for
>   re-use, as these are used both within submodule--helper.c and
>   submodule-config.c
> 
> * Several remote.c helper functions are refactored to take repository
>   pointers, enabling use with a submodule repository pointer.
> 
> * The branch_release logic is fixed so that it won't dereference
>   branch->merge if it was never setup. This appeared to trigger in some
>   cases if a submodule repository was passed into the read_config()
>   function.
> 
> Next, the submodule--helper.c logic in repo_get_default_remote() is
> refactored to remote.c helper functions. A new repo_default_remote() helper
> function is added which will try to find a default remote. This helper
> first tries to look up the remote from the checked out branch, then falls
> back to the only remote (if there is exactly one remote) before finally
> falling back to "origin".
> 
> This improved logic is a good first step, but won't handle cases where
> there are multiple remotes, and when remotes have been renamed.
> 
> For the final improvement, notice that the parent project already stores
> the URL for the submodule in its .git/config or .gitmodules file. This URL
> is what we use to set the remote in the first place when cloning.
> 
> Add a repo_remote_from_url() helper which will iterate through the remotes
> and find the first remote with that URL. Use this in
> repo_get_default_remote() to first try and find a remote by its URL. If
> unsuccessful, we still keep the original fallback logic, in the off chance
> that the user has changed the URL from within the submodule.
> 
> This method is more robust as it is less likely that the user has manually
> changed the submodule URL within the submodule but not also within the
> .git/config.
> 
> With this change, all commands which need the submodule remote will first
> look up by URL before trying to use the fallback logic, and should now be
> able to find a suitable remote regardless of now they are renamed.
> 
> Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
> ---
> Jacob Keller (6):
>       dir: move starts_with_dot(_dot)_slash to dir.h
>       remote: remove the_repository from some functions
>       remote: check branch->merge before access in branch_release
>       submodule--helper: improve logic for fallback remote name
>       submodule: move get_default_remote_submodule()
>       submodule: look up remotes by URL first
> 
>  dir.h                       |  23 ++++++++++
>  remote.h                    |   3 ++
>  builtin/submodule--helper.c | 101 ++++++++++++++++++++++--------------------
>  remote.c                    | 104 ++++++++++++++++++++++++++++----------------
>  submodule-config.c          |  12 -----
>  t/t7406-submodule-update.sh |  61 ++++++++++++++++++++++++++
>  6 files changed, 207 insertions(+), 97 deletions(-)
> ---
> base-commit: 4c0e625c091d4c648cec7319bafaed3cc81658e5
> change-id: 20250610-jk-submodule-helper-use-url-e55d3c379faf
> 
> Best regards,
Seems like there hasn't been any interest in this series? :(
Previous: Jacob KellerNext: Junio C Hamano
Message 12 of 17 in “submodule: improve remote lookup logic”
  1. 0/6 submodule: improve remote lookup logicJacob Keller, Jun 11, 2025
  2. 1/6 dir: move starts_with_dot(_dot)_slash to dir.hJacob Keller, Jun 11, 2025
  3. 2/6 remote: remove the_repository from some functionsJacob Keller, Jun 11, 2025
  4. 3/6 remote: check branch->merge before access in branch_releaseJacob Keller, Jun 11, 2025
  5. 4/6 submodule--helper: improve logic for fallback remote nameJacob Keller, Jun 11, 2025
  6. Lidong YanJun 17, 2025
  7. Jacob KellerJun 17, 2025
  8. Jacob KellerJun 17, 2025
  9. Junio C HamanoJun 17, 2025
  10. 5/6 submodule: move get_default_remote_submodule()Jacob Keller, Jun 11, 2025
  11. 6/6 submodule: look up remotes by URL firstJacob Keller, Jun 11, 2025
  12. Jacob KellerJun 16, 2025
  13. Junio C HamanoJun 16, 2025
  14. Jacob KellerJun 16, 2025
  15. Junio C HamanoJun 17, 2025
  16. Junio C HamanoJun 17, 2025
  17. Jacob KellerJun 17, 2025

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.