All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	git@vger.kernel.org, Duy Nguyen <pclouds@gmail.com>
Subject: Re: [PATCH v3 0/9] Fix the early config
Date: Wed, 08 Mar 2017 09:09:31 -0800	[thread overview]
Message-ID: <xmqqy3wf3dbo.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <20170308073035.pt5ysp6bzpozoqps@sigill.intra.peff.net> (Jeff King's message of "Wed, 8 Mar 2017 02:30:35 -0500")

Jeff King <peff@peff.net> writes:

> Good catch. Another "non-gentle" thing I noticed here while looking at
> another thread: the repository-format version check uses the config
> parser, which will die() in certain circumstances. So for instance:
>
>   $ git init
>   $ git rev-parse && echo ok
>   ok
>
>   $ echo '[core]repositoryformatversion = 10' >.git/config
>   $ git rev-parse && echo ok
>   fatal: Expected git repo version <= 1, found 10

Just to set my expectation straight.  Do you expect/wish this not to
fail because of this in cmd_rev_parse()?

	/* No options; just report on whether we're in a git repo or not. */
	if (argc == 1) {
		setup_git_directory();
		git_config(git_default_config, NULL);
		return 0;
	}

Because we do not have anything other than yes/no to the question
"Are we in Git repository?", I'd expect that the expected answer to
the question would be "no" (if we could say "Yes, we are in a Git
repository but its version and layout is unknown to us so we are not
supposed to look at or touch it", that is a different matter).

So "fatal:" may be bad, but I think not seeing "ok" is what we
want to happen in this case.

Having said that, I am not sure asking for default-config is what we
wanted to do in the above code.  Perhaps a more modern way to write
the above code would be to do the "gently" version of setup, without
calling git_config() ourselves, and return the resulting value
returned in *nongit_ok?  If we can do so without triggering "fatal:"
and still return "no, we are not in a Git repository we are supposed
to touch", that would be good.

Or are you discussing a more general issue, iow, anything that can
work without repository (i.e. those who do _gently version of the
setup and act on *nongit_ok) should pretend as if there were no
(broken) repository and take the "no we are not in a repository"
codepath?

  parent reply	other threads:[~2017-03-08 17:24 UTC|newest]

Thread overview: 123+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-08 15:35 [PATCH/RFC 0/7] Pie-in-the-sky attempt to fix the early config Johannes Schindelin
2016-12-08 15:36 ` [PATCH/RFC 1/7] Make read_early_config() reusable Johannes Schindelin
2016-12-08 15:36 ` [PATCH/RFC 2/7] read_early_config(): avoid .git/config hack when unneeded Johannes Schindelin
2016-12-08 15:36 ` [PATCH/RFC 3/7] Mark builtins that create .git/ directories Johannes Schindelin
2016-12-08 15:36 ` [PATCH/RFC 4/7] read_early_config(): special-case `init` and `clone` Johannes Schindelin
2016-12-08 15:36 ` [PATCH/RFC 5/7] read_early_config(): really discover .git/ Johannes Schindelin
2016-12-08 15:36 ` [PATCH/RFC 6/7] WIP read_config_early(): respect ceiling directories Johannes Schindelin
2016-12-08 15:36 ` [PATCH/RFC 7/7] WIP: read_early_config(): add tests Johannes Schindelin
2016-12-08 17:26 ` [PATCH/RFC 0/7] Pie-in-the-sky attempt to fix the early config Jeff King
2016-12-09 17:28   ` Johannes Schindelin
2016-12-09 17:55     ` Jeff King
2016-12-09 12:42 ` Duy Nguyen
2016-12-09 16:52   ` Johannes Schindelin
2017-03-03  2:03 ` [PATCH v2 0/9] Fix " Johannes Schindelin
2017-03-03  2:04   ` [PATCH v2 1/9] t7006: replace dubious test Johannes Schindelin
2017-03-03  3:36     ` Jeff King
2017-03-03 11:10       ` Johannes Schindelin
2017-03-03  2:04   ` [PATCH v2 2/9] setup_git_directory(): use is_dir_sep() helper Johannes Schindelin
2017-03-03  3:37     ` Jeff King
2017-03-03 11:16       ` Johannes Schindelin
2017-03-03 11:26         ` Jeff King
2017-03-03 15:35           ` Johannes Schindelin
2017-03-03  2:04   ` [PATCH v2 3/9] setup_git_directory(): avoid changing global state during discovery Johannes Schindelin
2017-03-03  4:24     ` Jeff King
2017-03-03 13:54       ` Johannes Schindelin
2017-03-03  2:04   ` [PATCH v2 4/9] Export the discover_git_directory() function Johannes Schindelin
2017-03-03  4:45     ` Jeff King
2017-03-03 14:49       ` Johannes Schindelin
2017-03-03  2:04   ` [PATCH v2 5/9] Make read_early_config() reusable Johannes Schindelin
2017-03-03  4:46     ` Jeff King
2017-03-03 14:11       ` Johannes Schindelin
2017-03-03  2:04   ` [PATCH v2 6/9] read_early_config(): special-case builtins that create a repository Johannes Schindelin
2017-03-03  4:51     ` Jeff King
2017-03-03 15:11       ` Johannes Schindelin
2017-03-03  2:04   ` [PATCH v2 7/9] read_early_config(): avoid .git/config hack when unneeded Johannes Schindelin
2017-03-03  4:51     ` Jeff King
2017-03-03  2:04   ` [PATCH v2 8/9] read_early_config(): really discover .git/ Johannes Schindelin
2017-03-03  5:06     ` Jeff King
2017-03-03 15:26       ` Johannes Schindelin
2017-03-03  2:04   ` [PATCH v2 9/9] Test read_early_config() Johannes Schindelin
2017-03-03  5:07     ` Jeff King
2017-03-03 15:04       ` Johannes Schindelin
2017-03-03  5:14   ` [PATCH v2 0/9] Fix the early config Jeff King
2017-03-03 15:31     ` Johannes Schindelin
2017-03-03 17:31   ` [PATCH v3 " Johannes Schindelin
2017-03-03 17:32     ` [PATCH v3 1/9] t7006: replace dubious test Johannes Schindelin
2017-03-03 17:32     ` [PATCH v3 2/9] setup_git_directory(): use is_dir_sep() helper Johannes Schindelin
2017-03-03 17:32     ` [PATCH v3 3/9] Prepare setup_discovered_git_directory() the root directory Johannes Schindelin
2017-03-03 17:32     ` [PATCH v3 4/9] setup_git_directory_1(): avoid changing global state Johannes Schindelin
2017-03-03 17:33     ` [PATCH v3 5/9] Export the discover_git_directory() function Johannes Schindelin
2017-03-03 17:33     ` [PATCH v3 6/9] Make read_early_config() reusable Johannes Schindelin
2017-03-03 17:33     ` [PATCH v3 7/9] read_early_config(): avoid .git/config hack when unneeded Johannes Schindelin
2017-03-03 17:33     ` [PATCH v3 8/9] read_early_config(): really discover .git/ Johannes Schindelin
2017-03-03 17:33     ` [PATCH v3 9/9] Test read_early_config() Johannes Schindelin
2017-03-03 21:35     ` [PATCH v3 0/9] Fix the early config Junio C Hamano
2017-03-07 11:55       ` Johannes Schindelin
2017-03-07 15:18       ` Johannes Schindelin
2017-03-04  7:39     ` Jeff King
2017-03-05  3:36       ` Junio C Hamano
2017-03-07 14:31       ` Johannes Schindelin
2017-03-08  7:30         ` Jeff King
2017-03-08 16:18           ` Johannes Schindelin
2017-03-08 16:29             ` Jeff King
2017-03-08 17:09           ` Junio C Hamano [this message]
2017-03-08 17:42             ` Jeff King
2017-03-08 22:43               ` Junio C Hamano
2017-03-09 11:51                 ` Johannes Schindelin
2017-03-09 12:16                   ` Jeff King
2017-03-10 16:39                     ` Junio C Hamano
2017-03-07 14:32     ` [PATCH v4 00/10] " Johannes Schindelin
2017-03-07 14:32       ` [PATCH v4 01/10] t7006: replace dubious test Johannes Schindelin
2017-03-07 14:32       ` [PATCH v4 02/10] setup_git_directory(): use is_dir_sep() helper Johannes Schindelin
2017-03-07 14:32       ` [PATCH v4 03/10] Prepare setup_discovered_git_directory() the root directory Johannes Schindelin
2017-03-07 14:32       ` [PATCH v4 04/10] setup_git_directory_1(): avoid changing global state Johannes Schindelin
2017-03-07 23:24         ` Junio C Hamano
2017-03-07 23:35         ` Brandon Williams
2017-03-08  0:57           ` Johannes Schindelin
2017-03-08  2:10             ` Brandon Williams
2017-03-07 14:33       ` [PATCH v4 05/10] Introduce the discover_git_directory() function Johannes Schindelin
2017-03-07 14:33       ` [PATCH v4 06/10] Make read_early_config() reusable Johannes Schindelin
2017-03-07 14:33       ` [PATCH v4 07/10] read_early_config(): avoid .git/config hack when unneeded Johannes Schindelin
2017-03-07 14:33       ` [PATCH v4 08/10] read_early_config(): really discover .git/ Johannes Schindelin
2017-03-07 14:33       ` [PATCH v4 09/10] Test read_early_config() Johannes Schindelin
2017-03-07 14:33       ` [PATCH v4 10/10] setup_git_directory_gently_1(): avoid die()ing Johannes Schindelin
2017-03-09 22:23       ` [PATCH v5 00/11] Fix the early config Johannes Schindelin
2017-03-09 22:23         ` [PATCH v5 01/11] t7006: replace dubious test Johannes Schindelin
2017-03-09 22:23         ` [PATCH v5 02/11] setup_git_directory(): use is_dir_sep() helper Johannes Schindelin
2017-03-09 22:23         ` [PATCH v5 03/11] Prepare setup_discovered_git_directory() the root directory Johannes Schindelin
2017-03-09 22:24         ` [PATCH v5 04/11] setup_git_directory_1(): avoid changing global state Johannes Schindelin
2017-03-10 19:34           ` Junio C Hamano
2017-03-09 22:24         ` [PATCH v5 05/11] Introduce the discover_git_directory() function Johannes Schindelin
2017-03-09 22:24         ` [PATCH v5 06/11] Make read_early_config() reusable Johannes Schindelin
2017-03-09 22:24         ` [PATCH v5 07/11] read_early_config(): avoid .git/config hack when unneeded Johannes Schindelin
2017-03-09 22:25         ` [PATCH v5 08/11] read_early_config(): really discover .git/ Johannes Schindelin
2017-03-09 22:25         ` [PATCH v5 09/11] Test read_early_config() Johannes Schindelin
2017-03-10 19:02           ` Junio C Hamano
2017-03-13 17:19             ` Johannes Schindelin
2017-03-13 17:32               ` Junio C Hamano
2017-03-09 22:25         ` [PATCH v5 10/11] setup_git_directory_gently_1(): avoid die()ing Johannes Schindelin
2017-03-10 18:58           ` Junio C Hamano
2017-03-13 19:38             ` Johannes Schindelin
2017-03-13 19:47               ` Junio C Hamano
2017-03-13 20:20                 ` Junio C Hamano
2017-03-13 21:46                   ` Johannes Schindelin
2017-03-13 23:31                     ` Junio C Hamano
2017-03-09 22:25         ` [PATCH v5 11/11] t1309: document cases where we would want early config not to die() Johannes Schindelin
2017-03-13 20:09         ` [PATCH v6 00/12] Fix the early config Johannes Schindelin
2017-03-13 20:09           ` [PATCH v6 01/12] t7006: replace dubious test Johannes Schindelin
2017-03-13 20:09           ` [PATCH v6 02/12] setup_git_directory(): use is_dir_sep() helper Johannes Schindelin
2017-03-13 20:09           ` [PATCH v6 03/12] Prepare setup_discovered_git_directory() the root directory Johannes Schindelin
2017-03-13 20:34             ` Junio C Hamano
2017-03-13 21:44               ` Johannes Schindelin
2017-03-13 20:10           ` [PATCH v6 04/12] setup_git_directory_1(): avoid changing global state Johannes Schindelin
2017-03-13 20:10           ` [PATCH v6 05/12] Introduce the discover_git_directory() function Johannes Schindelin
2017-03-13 20:11           ` [PATCH v6 06/12] Make read_early_config() reusable Johannes Schindelin
2017-03-13 20:11           ` [PATCH v6 07/12] read_early_config(): avoid .git/config hack when unneeded Johannes Schindelin
2017-03-13 20:11           ` [PATCH v6 08/12] read_early_config(): really discover .git/ Johannes Schindelin
2017-03-13 20:11           ` [PATCH v6 09/12] Add t1309 to test read_early_config() Johannes Schindelin
2017-03-13 20:11           ` [PATCH v6 10/12] setup_git_directory_gently_1(): avoid die()ing Johannes Schindelin
2017-03-13 20:11           ` [PATCH v6 11/12] t1309: document cases where we would want early config not to die() Johannes Schindelin
2017-03-13 20:12           ` [PATCH v6 12/12] setup.c: mention unresolved problems Johannes Schindelin
2017-03-13 22:31           ` [PATCH v6 00/12] Fix the early config Junio C Hamano
2017-03-14 18:01             ` Jeff King

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=xmqqy3wf3dbo.fsf@gitster.mtv.corp.google.com \
    --to=gitster@pobox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.