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

Re: [PATCH] submodule.sh update --remote: default to oid instead of master

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Sep 5, 2018, 23:10 UTC
Message-ID
<20180905231006.GC120842@aiede.svl.corp.google.com>
In-Reply-To
<20180905224825.13564-1-sbeller@google.com>
Stefan Beller wrote:
> Subject: submodule.sh update --remote: default to oid instead of master
Yay!
Nit: it wasn't clear to me at first what default this subject line was
referring to.  Perhaps:
	submodule update --remote: skip GITLINK update when no branch is set
[...]
Show 5 quoted lines
> --- a/Documentation/gitmodules.txt
> +++ b/Documentation/gitmodules.txt
> @@ -50,11 +50,12 @@ submodule.<name>.update::
>  
>  submodule.<name>.branch::
[...]
> +	If the option is not specified, do not update to any branch but
> +	the object id of the remote.
Likewise: how about something like
	If not set, the default is for `git submodule update --remote`
	to update the submodule to the superproject's recorded SHA-1.
[...]
Show 16 quoted lines
> --- a/git-submodule.sh
> +++ b/git-submodule.sh
> @@ -568,16 +568,19 @@ cmd_update()
>  		if test -n "$remote"
>  		then
>  			branch=$(git submodule--helper remote-branch "$sm_path")
> -			if test -z "$nofetch"
> +			if test -n "$branch"
>  			then
> -				# Fetch remote before determining tracking $sha1
> -				fetch_in_submodule "$sm_path" $depth ||
> -				die "$(eval_gettext "Unable to fetch in submodule path '\$sm_path'")"
> +				if test -z "$nofetch"
> +				then
> +					# Fetch remote before determining tracking $sha1
> +					fetch_in_submodule "$sm_path" $depth ||

Makes sense. If $sha1 isn't available in the submodule, it will fetch again later.

[...]
Show 10 quoted lines
> --- a/t/t7406-submodule-update.sh
> +++ b/t/t7406-submodule-update.sh
> @@ -260,6 +260,28 @@ test_expect_success 'submodule update --remote should fetch upstream changes wit
>  	)
>  '
>  
> +test_expect_success 'submodule update --remote should not fetch upstream when no branch is set' '
> +	(
> +		cd super &&
> +		test_might_fail git config --unset -f .gitmodules submodule."submodule".branch &&
Not about this patch: the quoting here is strange.
> +		git add .gitmodules &&
> +		git commit --allow-empty -m "submodules: pin in superproject branch"
> +	) &&
I wonder if we can do simpler by using -C + some helpers: something like
	git config --unset -f super/.gitmodules ... &&
	test_commit -C submodule ... &&
	git -C super submodule update ... &&
	test_cmp_rev ...
Unfortunately test_cmp_rev doesn't accept a -C argument.

Broader comment: do you think people will be surprised by this new behavior? Is there anything special we'd need to do to call it out (e.g., print a warning or put something in release notes)?

Thanks, Jonathan

Previous: Stefan BellerNext: Stefan Beller
Message 2 of 5 in “submodule.sh update --remote: default to oid instead of master”
  1. submodule.sh update --remote: default to oid instead of masterStefan Beller, Sep 5, 2018
  2. Jonathan NiederSep 5, 2018
  3. Stefan BellerSep 6, 2018
  4. Jonathan NiederSep 6, 2018
  5. submodule update --remote: introduce pinningStefan Beller, Oct 2, 2018

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.