git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Heiko Voigt <hvoigt@hvoigt.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Stefan Beller <sbeller@google.com>,
	Yaroslav Halchenko <yoh@onerussian.com>,
	"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [wishlist?] make submodule commands robust to having non-submodule Subprojects
Date: Fri, 16 Sep 2016 16:11:43 +0200	[thread overview]
Message-ID: <20160916141143.GA47240@book.hvoigt.net> (raw)
In-Reply-To: <xmqqsht1nhlh.fsf@gitster.mtv.corp.google.com>

On Thu, Sep 15, 2016 at 11:27:54AM -0700, Junio C Hamano wrote:
> Stefan Beller <sbeller@google.com> writes:
> > So how about this fictional work flow:
> >
> >          $ git init top
> >          $ cd top
> >          $ git commit --allow-empty -m 'initial in top'
> >          $ git init sub
> >          $ git -C sub commit --allow-empty -m 'initial in sub'
> >          $ git add sub
> >         You added a gitlink, but no corresponding entry in
> >         .gitmodules is found. This is fine for gits core functionality, but
> >         the submodule command gets confused by this unless you add 'sub'
> >         to your .gitmodules via `git submodule add --already-in-tree \
> >         --reuse-submodules-origin-as-URL sub`. Alternatively you can make this
> >         message disappear by configuring advice.gitlinkPitfalls.
> 
> I am not sure if I agree with that direction.
> 
> If the trend in Git community collectively these days is to make
> usage of submodules easier and smoother, I'd imagine that you would
> want to teach "git add" that was given a submodule to "git submodule
> add" instead by default, with an option "git add --no-gitmodules
> sub" to disable it, or something like that.
> 
> >          $ git submodule add --fixup-modules-file ./sub sub
> >          Adding .gitmodule entry only for `sub` to use `git -C remote
> > show origin` as URL.
> 
> I agree that a feature like this is needed regardless of what
> happens at "git add" time.

How about just

   git submodule add <submodulepath>

? I remember back in the days when I started with submodules thats the
way I imagined submodules would work:

1. clone the submodule into a directory
2. git submodule add it
3. git commit everything

Because that how you basically work with files.  So instead of adding
another option I would rather like to autodetect that:

 * its a relative path inside this repo that is passed to
   'git submodule add'
 * there is no .gitmodules entry
 * and no .git/config
==> create those from a remote in the submodule

Corner cases:

 * If there is more than one remote we could tell the user to use an
   option to specify which one to use.
 * Barf in case there is no remote (not adding the submodule except -f
   is used).
 * If the gitlink is already there but no .gitmodules entry, 'git
   submodule add' will just add the entry as if it was initially added.

Instead of giving an error message that the submodule is already added
we could actually be nicer to the user and try to fix things for him
instead.

Cheers Heiko

  reply	other threads:[~2016-09-16 14:12 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-15 13:02 [wishlist?] make submodule commands robust to having non-submodule Subprojects Yaroslav Halchenko
2016-09-15 16:05 ` Stefan Beller
2016-09-15 16:40   ` Yaroslav Halchenko
2016-09-15 17:29     ` Stefan Beller
2016-09-15 18:02   ` Junio C Hamano
2016-09-15 18:12     ` Yaroslav Halchenko
2016-09-15 18:16       ` Stefan Beller
2016-09-15 18:29       ` Junio C Hamano
2016-09-15 18:15     ` Stefan Beller
2016-09-15 18:27       ` Junio C Hamano
2016-09-16 14:11         ` Heiko Voigt [this message]
2016-09-16 15:40           ` Jacob Keller
2016-09-16 18:28           ` 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=20160916141143.GA47240@book.hvoigt.net \
    --to=hvoigt@hvoigt.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=sbeller@google.com \
    --cc=yoh@onerussian.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).