# [PATCH] refspec.h: reinstate 'extern' to fix sparse warning

4 messages from 2018-05-16 to 2018-05-16. Participants: Ramsay Jones, Brandon Williams, Stefan Beller, Johannes Schindelin.
Thread: https://gitlist.dev/t/48507

## Ramsay Jones, 2018-05-16 21:35

Subject: [PATCH] refspec.h: reinstate 'extern' to fix sparse warning
Message-ID: <29f60a43-9c95-512a-ef85-558906a08ed0@ramsayjones.plus.com>
URL: https://gitlist.dev/e/29f60a43-9c95-512a-ef85-558906a08ed0%40ramsayjones.plus.com

```

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
---

Hi Brandon,

If you need to re-roll your 'bw/refspec-api' branch, could you please
squash this, or the equivalent change before the 'struct refname' to
'struct refname_item' name change, into the relevant patch. (which
would be patch #1, commit 8999381ed).

This patch was built on top of 'pu', but as I said above, patch #1
is where the original 'extern' keyword was dropped. (see first hunk
of the diff to 'remote.h').

Thanks!

ATB,
Ramsay Jones

 refspec.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/refspec.h b/refspec.h
index 374f8ea63..7e1ff94ac 100644
--- a/refspec.h
+++ b/refspec.h
@@ -2,7 +2,7 @@
 #define REFSPEC_H
 
 #define TAG_REFSPEC "refs/tags/*:refs/tags/*"
-const struct refspec_item *tag_refspec;
+extern const struct refspec_item *tag_refspec;
 
 struct refspec_item {
 	unsigned force : 1;
-- 
2.17.0

```

## Brandon Williams, 2018-05-16 21:42

Subject: Re: [PATCH] refspec.h: reinstate 'extern' to fix sparse warning
Message-ID: <20180516214251.GA60301@google.com>
URL: https://gitlist.dev/e/20180516214251.GA60301%40google.com
In-Reply-To: <29f60a43-9c95-512a-ef85-558906a08ed0@ramsayjones.plus.com>

```
On 05/16, Ramsay Jones wrote:
> 
> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
> ---
> 
> Hi Brandon,
> 
> If you need to re-roll your 'bw/refspec-api' branch, could you please
> squash this, or the equivalent change before the 'struct refname' to
> 'struct refname_item' name change, into the relevant patch. (which
> would be patch #1, commit 8999381ed).
> 
> This patch was built on top of 'pu', but as I said above, patch #1
> is where the original 'extern' keyword was dropped. (see first hunk
> of the diff to 'remote.h').

Of course I'll do that, I'm planning on sending out a v2 by the end of
the day and I'll incorporate that.

Though now I'm confused, I thought we were going towards eliminating
using the extern keyword? ...of course I guess it means something
_slightly_ different when using with a variable vs a function :)

> 
> Thanks!
> 
> ATB,
> Ramsay Jones
> 
>  refspec.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/refspec.h b/refspec.h
> index 374f8ea63..7e1ff94ac 100644
> --- a/refspec.h
> +++ b/refspec.h
> @@ -2,7 +2,7 @@
>  #define REFSPEC_H
>  
>  #define TAG_REFSPEC "refs/tags/*:refs/tags/*"
> -const struct refspec_item *tag_refspec;
> +extern const struct refspec_item *tag_refspec;
>  
>  struct refspec_item {
>  	unsigned force : 1;
> -- 
> 2.17.0

-- 
Brandon Williams

```

## Stefan Beller, 2018-05-16 21:47

Subject: Re: [PATCH] refspec.h: reinstate 'extern' to fix sparse warning
Message-ID: <CAGZ79kbPNJPtcvbgu81y3UYmKsUd6UNNr9kmQ7qjEfB0ZBTJwQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAGZ79kbPNJPtcvbgu81y3UYmKsUd6UNNr9kmQ7qjEfB0ZBTJwQ%40mail.gmail.com
In-Reply-To: <20180516214251.GA60301@google.com>

```
On Wed, May 16, 2018 at 2:42 PM, Brandon Williams <bmwill@google.com> wrote:
> On 05/16, Ramsay Jones wrote:
>>
>> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
>> ---
>>
>> Hi Brandon,
>>
>> If you need to re-roll your 'bw/refspec-api' branch, could you please
>> squash this, or the equivalent change before the 'struct refname' to
>> 'struct refname_item' name change, into the relevant patch. (which
>> would be patch #1, commit 8999381ed).
>>
>> This patch was built on top of 'pu', but as I said above, patch #1
>> is where the original 'extern' keyword was dropped. (see first hunk
>> of the diff to 'remote.h').
>
> Of course I'll do that, I'm planning on sending out a v2 by the end of
> the day and I'll incorporate that.
>
> Though now I'm confused, I thought we were going towards eliminating
> using the extern keyword? ...of course I guess it means something
> _slightly_ different when using with a variable vs a function :)

We're only eliminating it when it is redundant. :-)

For variables this is not redundant as we need it to tell apart the
declaration and definition of it, so we have to keep it.

```

## Johannes Schindelin, 2018-05-16 21:52

Subject: Re: [PATCH] refspec.h: reinstate 'extern' to fix sparse warning
Message-ID: <nycvar.QRO.7.76.6.1805162351050.77@tvgsbejvaqbjf.bet>
URL: https://gitlist.dev/e/nycvar.QRO.7.76.6.1805162351050.77%40tvgsbejvaqbjf.bet
In-Reply-To: <CAGZ79kbPNJPtcvbgu81y3UYmKsUd6UNNr9kmQ7qjEfB0ZBTJwQ@mail.gmail.com>

```
On Wed, 16 May 2018, Stefan Beller wrote:

> On Wed, May 16, 2018 at 2:42 PM, Brandon Williams <bmwill@google.com> wrote:
>
> > Though now I'm confused, I thought we were going towards eliminating
> > using the extern keyword? ...of course I guess it means something
> > _slightly_ different when using with a variable vs a function :)
> 
> We're only eliminating it when it is redundant. :-)
> 
> For variables this is not redundant as we need it to tell apart the
> declaration and definition of it, so we have to keep it.

Otherwise we will end up with the variable *defined* for every file that
includes that header. And of course those different versions of the same
variable would have possibly different values...

```
