git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Heiko Voigt <hvoigt@hvoigt.net>
To: "W. Trevor King" <wking@tremily.us>
Cc: Git <git@vger.kernel.org>, Francesco Pretto <ceztko@gmail.com>,
	Junio C Hamano <gitster@pobox.com>,
	Jens Lehmann <Jens.Lehmann@web.de>
Subject: Re: Re: [PATCH] submodule: Respect reqested branch on all clones
Date: Sun, 5 Jan 2014 01:39:22 +0100	[thread overview]
Message-ID: <20140105003922.GA21772@sandbox-ub> (raw)
In-Reply-To: <20140104225401.GA3156@odin.tremily.us>

On Sat, Jan 04, 2014 at 02:54:01PM -0800, W. Trevor King wrote:
> On Sat, Jan 04, 2014 at 11:09:15PM +0100, Heiko Voigt wrote:
> > On Fri, Jan 03, 2014 at 10:06:11AM -0800, W. Trevor King wrote:
> > > @@ -306,7 +307,14 @@ module_clone()
> > >  	echo "gitdir: $rel/$a" >"$sm_path/.git"
> > >  
> > >  	rel=$(echo $a | sed -e 's|[^/][^/]*|..|g')
> > > -	(clear_local_git_env; cd "$sm_path" && GIT_WORK_TREE=. git config core.worktree "$rel/$b")
> > 
> > Why should this line be removed? Is it not needed for correct
> > worktree <-> repo linking of submodules?
> > 
> > > +	(
> > > +		clear_local_git_env
> > > +		cd "$sm_path" &&
> > > +		GIT_WORK_TREE=. git config core.worktree "$rel/$b" &&
> > > +		if test -n "$branch"; then
> > > +			git checkout -f -q -B "$branch" "origin/$branch" && echo "checked out $branch"
> > > +		fi
> > > +	) || die "$(eval_gettext "Unable to setup cloned submodule '\$sm_path'")"
> > >  }
> 
> It's not removed, just merged with the branch manipulation that also
> happens in a clean local environment in $sm_path.  Spawning two
> sequential subshells with the same setup seemed like overkill.

Ah ok, thanks. For some reason I overlooked that.

> > > @@ -861,7 +860,12 @@ Maybe you want to use 'update --init'?")"
> > >  			case ";$cloned_modules;" in
> > >  			*";$name;"*)
> > >  				# then there is no local change to integrate
> > > -				update_module= ;;
> > > +				if test -n "$branch"; then
> > > +					update_module="!git reset --hard -q"
> > 
> > Does that not put the user in danger of loosing changes?
> 
> No, because this is only happens for just-cloned modules.  The user
> hasn't had time to make local changes yet.

Ah ok I see. But why the reset then? Doesn't the earlier git checkout in your
patch take care of checking out the branch and thus update to the right
revision?

> > If submodule.<name>.branch is configured:
> > 
> > 	git submodule update
> > 
> > will checkout the configured branch instead of the sha1?
> 
> The use case described by Francesco, a submodule maintainer Alice sets
> up the submodule, which downstream developer Bob want to checkout to a
> branch.  I think that matching the exact commit specified by Alice in
> Bob's checkout is important, even if the upstream developer Charlie
> has advanced the referenced branch in the meantime.  Shifting the
> referenced submodule commit should be an explicit decision made by
> Alice, not a clone-time accident for Bob.

But from what I understand of this part of Francesco's use-case description:

> # Developer
> $ git pull
> $ git submodule init
> $ git submodule update --remote
> $ cd <path>
> $ branch="$(git config -f ..\.gitmodules submodule.common.branch)"; git checkout $branch

Is that he wants to allow the developer to switch to following a branch instead
of an exact sha1 while some extension in the common module is still under
development. That makes it easier to develop in parallel in the submodule and
the superproject because you do not need to update the sha1 all the time.

E.g. its likely that changes have to be reviewed and cleaned up in the
submodule first until they can be merged to the master branch there. During
this time the developer follows the branch.
Once the submodule review is finished the superproject branch can switch back
to the exact model again (because the submodule will not change anymore) and
finish its implementation there.

Matching the exact commit and checking out the branch only if it points to that
exact commit does not really help the developer in this use-case. But I am only
guessing from my experience with development of features in submodule.

Cheers Heiko

  reply	other threads:[~2014-01-05  0:39 UTC|newest]

Thread overview: 144+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-30  1:49 [PATCH/RFC] Introduce git submodule add|update --attach Francesco Pretto
2013-12-31 20:05 ` Phil Hord
2014-01-02 18:48   ` Francesco Pretto
2014-01-13 17:31     ` Junio C Hamano
2014-01-02 20:07 ` Junio C Hamano
2014-01-02 23:42   ` Francesco Pretto
2014-01-03  0:26     ` Francesco Pretto
2014-01-03  8:49     ` Francesco Pretto
2014-01-03 18:06       ` [PATCH] submodule: Respect reqested branch on all clones W. Trevor King
2014-01-04 22:09         ` Heiko Voigt
2014-01-04 22:54           ` W. Trevor King
2014-01-05  0:39             ` Heiko Voigt [this message]
2014-01-05  1:08               ` W. Trevor King
2014-01-05  3:53         ` Francesco Pretto
2014-01-05 16:17           ` [RFC v2] submodule: Respect requested " W. Trevor King
2014-01-05 19:48             ` Heiko Voigt
2014-01-05 21:24               ` W. Trevor King
2014-01-05 22:57                 ` Heiko Voigt
2014-01-05 23:39                   ` W. Trevor King
2014-01-06  0:33                     ` W. Trevor King
2014-01-06  1:12                       ` W. Trevor King
2014-01-06 16:02                         ` Heiko Voigt
2014-01-06 23:10                           ` Francesco Pretto
2014-01-06 23:32                             ` Francesco Pretto
2014-01-07 18:27                               ` Junio C Hamano
2014-01-07 19:19                                 ` Francesco Pretto
2014-01-07 19:45                                   ` W. Trevor King
2014-01-07 19:48                                     ` Francesco Pretto
2014-01-07 21:37                                       ` W. Trevor King
2014-01-07 21:51                                         ` Francesco Pretto
2014-01-07 22:38                                     ` Heiko Voigt
2014-01-08  0:17                                       ` Francesco Pretto
2014-01-08  1:05                                         ` W. Trevor King
2014-01-08  2:12                                           ` Francesco Pretto
2014-01-08 23:07                                           ` Francesco Pretto
2014-01-09  0:03                                             ` W. Trevor King
2014-01-09  1:09                                               ` Francesco Pretto
2014-01-09  2:22                                                 ` W. Trevor King
2014-01-09  8:31                                                 ` Jens Lehmann
2014-01-09 17:32                                                   ` W. Trevor King
2014-01-09 19:23                                                     ` Jens Lehmann
2014-01-09 19:55                                                       ` W. Trevor King
2014-01-09 21:40                                                         ` Jens Lehmann
2014-01-09 22:18                                                           ` W. Trevor King
2014-01-14 10:24                                                             ` Heiko Voigt
2014-01-14 16:57                                                               ` W. Trevor King
2014-01-14 20:58                                                                 ` Heiko Voigt
2014-01-14 21:42                                                                   ` W. Trevor King
2014-01-14 22:19                                                                     ` Heiko Voigt
2014-01-14 22:39                                                                       ` W. Trevor King
2014-01-14 21:46                                                               ` Re: " Heiko Voigt
2014-01-14 22:22                                                                 ` W. Trevor King
2014-01-14 22:42                                                                   ` Heiko Voigt
2014-01-15  0:02                                                                     ` Francesco Pretto
2014-01-16  4:09                                                                     ` [PATCH v4 0/6] submodule: Local branch creation in module_clone W. Trevor King
2014-01-16  4:10                                                                       ` [PATCH v4 1/6] submodule: Make 'checkout' update_module explicit W. Trevor King
2014-01-16 18:46                                                                         ` Junio C Hamano
2014-01-16 19:22                                                                           ` W. Trevor King
2014-01-16 20:07                                                                             ` Francesco Pretto
2014-01-16 20:19                                                                               ` W. Trevor King
2014-01-16  4:10                                                                       ` [PATCH v4 2/6] submodule: Document module_clone arguments in comments W. Trevor King
2014-01-16  4:10                                                                       ` [PATCH v4 3/6] submodule: Explicit local branch creation in module_clone W. Trevor King
2014-01-16 19:18                                                                         ` Junio C Hamano
2014-01-16 19:29                                                                           ` W. Trevor King
2014-01-16 19:43                                                                         ` Junio C Hamano
2014-01-16 21:12                                                                           ` W. Trevor King
2014-01-16  4:10                                                                       ` [PATCH v4 4/6] t7406: Just-cloned checkouts update to the gitlinked hash with 'reset' W. Trevor King
2014-01-16 19:22                                                                         ` Junio C Hamano
2014-01-16 19:32                                                                           ` W. Trevor King
2014-01-16 20:24                                                                             ` Junio C Hamano
2014-01-16  4:10                                                                       ` [PATCH v4 5/6] t7406: Add explicit tests for head attachement after cloning updates W. Trevor King
2014-01-16  4:10                                                                       ` [PATCH v4 6/6] Documentation: Describe 'submodule update' modes in detail W. Trevor King
2014-01-16 20:21                                                                         ` Junio C Hamano
2014-01-16 20:55                                                                           ` W. Trevor King
2014-01-16 21:02                                                                             ` John Keeping
2014-01-16 21:16                                                                               ` W. Trevor King
2014-01-16 21:55                                                                             ` Junio C Hamano
2014-01-17  2:37                                                                               ` W. Trevor King
2014-01-26 20:45                                                                                 ` [PATCH v5 0/4] submodule: Local branch creation in module_clone W. Trevor King
2014-01-26 20:45                                                                                   ` [PATCH v5 1/4] submodule: Make 'checkout' update_module explicit W. Trevor King
2014-01-27  1:32                                                                                     ` Eric Sunshine
2014-01-27  1:59                                                                                       ` W. Trevor King
2014-01-26 20:45                                                                                   ` [PATCH v5 2/4] submodule: Document module_clone arguments in comments W. Trevor King
2014-01-26 20:45                                                                                   ` [PATCH v5 3/4] submodule: Explicit local branch creation in module_clone W. Trevor King
2014-01-26 20:45                                                                                   ` [PATCH v5 4/4] Documentation: Describe 'submodule update --remote' use case W. Trevor King
2014-01-16 22:18                                                                           ` [PATCH v4 6/6] Documentation: Describe 'submodule update' modes in detail Philip Oakley
2014-01-16 22:35                                                                             ` W. Trevor King
2014-01-08 23:54                                           ` Re: [RFC v2] submodule: Respect requested branch on all clones Francesco Pretto
2014-01-09  0:23                                             ` W. Trevor King
2014-01-07 19:52                                   ` Francesco Pretto
2014-01-06 15:47                     ` Re: " Heiko Voigt
2014-01-06 17:22                       ` W. Trevor King
2014-01-05 21:27             ` Francesco Pretto
2014-01-05 21:47               ` W. Trevor King
2014-01-05 22:01                 ` W. Trevor King
2014-01-06 14:47               ` Heiko Voigt
2014-01-06 16:56                 ` Junio C Hamano
2014-01-06 17:37                   ` W. Trevor King
2014-01-06 21:32                     ` Junio C Hamano
2014-01-07  0:55                   ` Francesco Pretto
2014-01-07 18:15             ` Junio C Hamano
2014-01-07 18:47               ` W. Trevor King
2014-01-07 19:21                 ` Junio C Hamano
2014-01-07 19:50                   ` W. Trevor King
2014-01-05  2:50       ` [PATCH 1/2] git-submodule.sh: Support 'checkout' as a valid update command Francesco Pretto
2014-01-05  2:50         ` [PATCH 2/2] Introduce git submodule attached update Francesco Pretto
2014-01-05 19:55           ` Francesco Pretto
2014-01-05 20:33           ` Heiko Voigt
2014-01-05 21:46             ` Francesco Pretto
2014-01-06 14:06               ` Heiko Voigt
2014-01-06 17:47                 ` Francesco Pretto
2014-01-06 19:21                   ` David Engster
2014-01-07 19:27                     ` W. Trevor King
2014-01-07  4:10                   ` W. Trevor King
2014-01-07 22:36                     ` Preferred local submodule branches (was: Introduce git submodule attached update) W. Trevor King
2014-01-07 23:52                       ` W. Trevor King
2014-01-08  3:47                         ` Preferred local submodule branches W. Trevor King
2014-01-08  4:06                           ` W. Trevor King
2014-01-09  6:17                             ` [RFC v3 0/4] " W. Trevor King
2014-01-09  6:17                               ` [RFC v3 1/4] submodule: Add helpers for configurable local branches W. Trevor King
2014-01-09  6:17                               ` [RFC v3 2/4] submodule: Teach 'update' to preserve " W. Trevor King
2014-01-09  6:17                               ` [RFC v3 3/4] submodule: Teach 'add' about a configurable local-branch W. Trevor King
2014-01-15  0:18                                 ` Francesco Pretto
2014-01-15  1:02                                   ` W. Trevor King
2014-01-09  6:17                               ` [RFC v3 4/4] submodule: Add a new 'checkout' command W. Trevor King
2014-01-12  1:08                               ` Tight submodule bindings (was: Preferred local submodule branches) W. Trevor King
2014-01-13 19:37                                 ` Tight submodule bindings Jens Lehmann
2014-01-13 20:07                                   ` W. Trevor King
2014-01-13 22:13                                 ` Junio C Hamano
2014-01-14  2:44                                   ` W. Trevor King
2014-01-07 22:51                     ` Re: [PATCH 2/2] Introduce git submodule attached update Heiko Voigt
2014-01-07 23:14                       ` W. Trevor King
2014-01-07 18:56                   ` Junio C Hamano
2014-01-07 19:44                     ` Francesco Pretto
2014-01-07 19:07                   ` Junio C Hamano
2014-01-07 19:25                     ` Francesco Pretto
2014-01-05 23:22             ` Francesco Pretto
2014-01-06 14:18               ` Heiko Voigt
2014-01-06 15:58                 ` W. Trevor King
2014-01-05 20:20         ` [PATCH 1/2] git-submodule.sh: Support 'checkout' as a valid update command Heiko Voigt
2014-01-05 20:44         ` W. Trevor King
2014-01-06 16:20           ` Junio C Hamano
2014-01-06 17:42             ` Junio C Hamano
2014-01-06 17:52               ` Francesco Pretto

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=20140105003922.GA21772@sandbox-ub \
    --to=hvoigt@hvoigt.net \
    --cc=Jens.Lehmann@web.de \
    --cc=ceztko@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=wking@tremily.us \
    /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).