git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Elijah Newren <newren@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 1/9] Add missing includes and forward declares
Date: Sat, 11 Aug 2018 13:43:01 -0400	[thread overview]
Message-ID: <20180811174301.GA9287@sigill.intra.peff.net> (raw)
In-Reply-To: <20180811043218.31456-2-newren@gmail.com>

On Fri, Aug 10, 2018 at 09:32:10PM -0700, Elijah Newren wrote:

> diff --git a/argv-array.h b/argv-array.h
> index a39ba43f57..c46238784c 100644
> --- a/argv-array.h
> +++ b/argv-array.h
> @@ -1,6 +1,8 @@
>  #ifndef ARGV_ARRAY_H
>  #define ARGV_ARRAY_H
>  
> +#include "git-compat-util.h"   /* for LAST_ARG_MUST_BE_NULL */

Following up on what I said in the other message, I think we should omit
this. All header files should assume the environment provided by
git-compat-util.h is already loaded (and all non-compat C files should
make sure they load it first).

> diff --git a/color.h b/color.h
> index 5b744e1bc6..74edbffc9d 100644
> --- a/color.h
> +++ b/color.h
> @@ -1,6 +1,8 @@
>  #ifndef COLOR_H
>  #define COLOR_H
>  
> +#include <stdio.h>

This one is more actively wrong than the git-compat-util.h one. Anybody
who already included git-compat-util.h would not be helped by this. And
anybody who _didn't_ may be hurt, because now git-compat-util.h might
run into ordering problems caused by headers already loaded as part of
stdio.h (and keep in mind that stdio.h often brings in other
system-dependent definitions, too).

> diff --git a/bulk-checkin.h b/bulk-checkin.h
> index a85527318b..e036231636 100644
> --- a/bulk-checkin.h
> +++ b/bulk-checkin.h
> @@ -4,6 +4,8 @@
>  #ifndef BULK_CHECKIN_H
>  #define BULK_CHECKIN_H
>  
> +#include "cache.h" /* for object_type */

As I said earlier, I don't mind includes like these that make
everybody's lives a little easier, and shouldn't introduce any funny
ordering constraints.

IMHO, though, comments like "for X" are probably a bad idea. That may be
accurate _now_, but it is very likely to grow stale without anybody
noticing. You only care about that "X" if you are thinking about
removing the include, and then the right answer is not to trust the
comment, but to remove the include and make sure there is no
other breakage.

The one exception is if there is some subtlety, like including a header
file that uses macros to replace a function, and removing it wouldn't
break compilation but produce a different result. But then:

  - I'd hope we don't have anything like that, because it sounds
    horrible ;)

  - you'd probably want a much more explanatory comment

> [...]

The rest of them are all variants on these three (or forward
declarations, which I put in the same boat as this third recursive
include; i.e., it's a good change).

-Peff

  reply	other threads:[~2018-08-11 20:29 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-11  4:32 [PATCH 0/9] Add missing includes and forward declares Elijah Newren
2018-08-11  4:32 ` [PATCH 1/9] " Elijah Newren
2018-08-11 17:43   ` Jeff King [this message]
2018-08-11  4:32 ` [PATCH 2/9] alloc: make allocate_alloc_state and clear_alloc_state more consistent Elijah Newren
2018-08-11  4:32 ` [PATCH 3/9] Move definition of enum branch_track from cache.h to branch.h Elijah Newren
2018-08-11  4:32 ` [PATCH 4/9] urlmatch.h: fix include guard Elijah Newren
2018-08-11  4:32 ` [PATCH 5/9] compat/precompose_utf8.h: use more common include guard style Elijah Newren
2018-08-11  4:32 ` [PATCH 6/9] ewah/ewok.h: add missing include Elijah Newren
2018-08-11  4:32 ` [PATCH 7/9] sha1dc/sha1.h: " Elijah Newren
2018-08-11  4:32 ` [PATCH 8/9] xdiff/xdiff.h: " Elijah Newren
2018-08-11  4:32 ` [PATCH 9/9] Add missing includes and forward declares Elijah Newren
2018-08-11  8:30 ` [PATCH 0/9] " Ævar Arnfjörð Bjarmason
2018-08-11  8:59   ` Elijah Newren
2018-08-11 17:34     ` Jeff King
2018-08-13 18:24       ` Junio C Hamano
2018-08-14  6:42         ` Elijah Newren
2018-08-15  5:45           ` Junio C Hamano
2018-08-15  5:57             ` Elijah Newren
2018-08-15 15:43               ` Junio C Hamano
2018-08-15 15:55                 ` Elijah Newren
2018-08-15 16:11                   ` Junio C Hamano
2018-08-15  1:38         ` Jeff King
2018-08-15  4:55           ` Jonathan Nieder
2018-08-15  4:57           ` Jonathan Nieder
2018-08-11 20:50 ` [PATCHv2 0/6] " Elijah Newren
2018-08-11 20:50   ` [PATCHv2 1/6] " Elijah Newren
2018-08-11 20:50   ` [PATCHv2 2/6] alloc: make allocate_alloc_state and clear_alloc_state more consistent Elijah Newren
2018-08-11 20:50   ` [PATCHv2 3/6] Move definition of enum branch_track from cache.h to branch.h Elijah Newren
2018-08-11 21:32     ` Ramsay Jones
2018-08-11 20:50   ` [PATCHv2 4/6] urlmatch.h: fix include guard Elijah Newren
2018-08-11 20:50   ` [PATCHv2 5/6] compat/precompose_utf8.h: use more common include guard style Elijah Newren
2018-08-11 20:50   ` [PATCHv2 6/6] Add missing includes and forward declares Elijah Newren
2018-08-13 17:17   ` [PATCHv3 0/6] " Elijah Newren
2018-08-13 17:17     ` [PATCHv3 1/6] " Elijah Newren
2018-08-15  5:10       ` Jonathan Nieder
2018-08-15  5:50         ` Elijah Newren
2018-08-15  6:13           ` Jonathan Nieder
2018-08-15  6:51             ` Elijah Newren
2018-08-15 15:26               ` Elijah Newren
2018-08-13 17:17     ` [PATCHv3 2/6] alloc: make allocate_alloc_state and clear_alloc_state more consistent Elijah Newren
2018-08-15  5:18       ` Jonathan Nieder
2018-08-13 17:17     ` [PATCHv3 3/6] Move definition of enum branch_track from cache.h to branch.h Elijah Newren
2018-08-15  5:22       ` Jonathan Nieder
2018-08-13 17:17     ` [PATCHv3 4/6] urlmatch.h: fix include guard Elijah Newren
2018-08-15  5:25       ` Jonathan Nieder
2018-08-13 17:17     ` [PATCHv3 5/6] compat/precompose_utf8.h: use more common include guard style Elijah Newren
2018-08-15  5:28       ` Jonathan Nieder
2018-08-13 17:17     ` [PATCHv3 6/6] Add missing includes and forward declares Elijah Newren
2018-08-15  5:31       ` Jonathan Nieder

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180811174301.GA9287@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=newren@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).