git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Patrick Steinhardt <ps@pks.im>
Cc: git@vger.kernel.org, Jens Lehmann <Jens.Lehmann@web.de>,
	Heiko Voigt <hvoigt@hvoigt.net>
Subject: Re: [RFC] git submodule purge
Date: Mon, 16 Mar 2015 13:03:53 -0700	[thread overview]
Message-ID: <20150316200353.GB5186@google.com> (raw)
In-Reply-To: <20150316134407.GA31794@pks-tp.elego.de>

(+cc: Jens and Heiko, submodule experts)
Hi,

Patrick Steinhardt wrote:

> This proposal is just for discussion. If there is any interest I
> will implement the feature and send some patches.
>
> Currently it is hard to properly remove submodules. That is when
> a submodule is deinitialized and removed from a repository the
> directory '.git/modules/<SM_NAME>' will still be present and
> there is no way to remove it despite manually calling `rm` on it.
> I think there should be a command that is able to remove those
> dangling repositories if the following conditions are met:
>
> - the submodule should not be initialized
>
> - the submodule should not have an entry in .gitmodules in the
>   currently checked out revision
>
> - the submodule should not contain any commits that are not
>   upstream
>
> - the submodule should not contain other submodules that do not
>   meet those conditions
>
> This would ensure that it is hard to loose any commits that may
> be of interest. In the case that the user knows what he is doing
> we may provide a '--force' switch to override those checks.

Those conditions look simultaneously too strong and too weak. ;-)

In principle, it should be safe to remove .git/modules/<name> as
long as

 (1) it (and its submodules, sub-sub-modules, etc) doesn't have any
     un-pushed local commits.

 (2) it is not being referred to by a .git file in the work tree of
     the parent repository.

Condition (1) can be relaxed if the user knows what they are losing
and is okay with that.  Condition (2) can be avoided by removing
(de-initing) the copy of that submodule in the worktree at the same
time.

The functionality sounds like a useful thing to have, whether as an
option to 'git submodule deinit' or as a new subcommand.  In the long
term I would like it to be possible to do everything 'git submodule'
can do using normal git commands instead of that specialized
interface.  What command do you think this would eventually belong in?
(An option to "git gc", maybe?)

Thanks,
Jonathan

  parent reply	other threads:[~2015-03-16 20:04 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-16 13:44 [RFC] git submodule purge Patrick Steinhardt
2015-03-16 15:55 ` Junio C Hamano
2015-03-17  8:18   ` Patrick Steinhardt
2015-03-17  8:25     ` Fredrik Gustafsson
2015-03-16 20:03 ` Jonathan Nieder [this message]
2015-03-17  7:56   ` Patrick Steinhardt
2015-03-23 21:32     ` Jens Lehmann
2015-03-25  9:06       ` Patrick Steinhardt
2015-03-25 19:47         ` Jens Lehmann
2015-03-26 13:30           ` Patrick Steinhardt
2015-03-26 21:48             ` Jens Lehmann

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=20150316200353.GB5186@google.com \
    --to=jrnieder@gmail.com \
    --cc=Jens.Lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=hvoigt@hvoigt.net \
    --cc=ps@pks.im \
    /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).