# [PATCH] refs: mark the file-local vtable symbols as static

3 messages from 2016-06-08 to 2016-06-16. Participants: Ramsay Jones, Junio C Hamano, Michael Haggerty.
Thread: https://gitlist.dev/t/42561

## Ramsay Jones, 2016-06-08 14:48

Subject: [PATCH] refs: mark the file-local vtable symbols as static
Message-ID: <57583022.2030205@ramsayjones.plus.com>
URL: https://gitlist.dev/e/57583022.2030205%40ramsayjones.plus.com

```

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

Hi Michael, Junio,

I would normally ask you to squash this into the relevant patch when
you next re-roll your 'mh/ref-iterators' branch, but this has already
been merged into next. (I normally have a bit more time ... sorry!).

Perhaps, after the release, when the next branch is re-wound/re-built,
this could be squashed into your branch then.

Anyway, after applying this patch, the following symbols are still
'public but unused':

	> refs/files-backend.o	- files_reflog_iterator_begin
	> refs/iterator.o	- is_empty_ref_iterator
	> refs/iterator.o	- merge_ref_iterator_begin

These all look (potentially) useful for the implementation of
additional 'ref-iter' types and look to be part of the _internal_
iterator API - so they should not be marked static. Can you just
confirm my interpretation.

Thanks.

ATB,
Ramsay Jones

 refs/files-backend.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/refs/files-backend.c b/refs/files-backend.c
index a006a65..6213891 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -711,7 +711,7 @@ static int cache_ref_iterator_abort(struct ref_iterator *ref_iterator)
 	return ITER_DONE;
 }
 
-struct ref_iterator_vtable cache_ref_iterator_vtable = {
+static struct ref_iterator_vtable cache_ref_iterator_vtable = {
 	cache_ref_iterator_advance,
 	cache_ref_iterator_peel,
 	cache_ref_iterator_abort
@@ -1933,7 +1933,7 @@ static int files_ref_iterator_abort(struct ref_iterator *ref_iterator)
 	return ok;
 }
 
-struct ref_iterator_vtable files_ref_iterator_vtable = {
+static struct ref_iterator_vtable files_ref_iterator_vtable = {
 	files_ref_iterator_advance,
 	files_ref_iterator_peel,
 	files_ref_iterator_abort
@@ -3354,7 +3354,7 @@ static int files_reflog_iterator_abort(struct ref_iterator *ref_iterator)
 	return ok;
 }
 
-struct ref_iterator_vtable files_reflog_iterator_vtable = {
+static struct ref_iterator_vtable files_reflog_iterator_vtable = {
 	files_reflog_iterator_advance,
 	files_reflog_iterator_peel,
 	files_reflog_iterator_abort
-- 
2.8.0

```

## Junio C Hamano, 2016-06-08 18:55

Subject: Re: [PATCH] refs: mark the file-local vtable symbols as static
Message-ID: <xmqqfusnldc4.fsf@gitster.mtv.corp.google.com>
URL: https://gitlist.dev/e/xmqqfusnldc4.fsf%40gitster.mtv.corp.google.com
In-Reply-To: <57583022.2030205@ramsayjones.plus.com>

```
Ramsay Jones <ramsay@ramsayjones.plus.com> writes:

> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
> ---
>
> Hi Michael, Junio,
>
> I would normally ask you to squash this into the relevant patch when
> you next re-roll your 'mh/ref-iterators' branch, but this has already
> been merged into next. (I normally have a bit more time ... sorry!).
>
> Perhaps, after the release, when the next branch is re-wound/re-built,
> this could be squashed into your branch then.

Yup, sounds like a plan.

>
> Anyway, after applying this patch, the following symbols are still
> 'public but unused':
>
> 	> refs/files-backend.o	- files_reflog_iterator_begin
> 	> refs/iterator.o	- is_empty_ref_iterator
> 	> refs/iterator.o	- merge_ref_iterator_begin
>
> These all look (potentially) useful for the implementation of
> additional 'ref-iter' types and look to be part of the _internal_
> iterator API - so they should not be marked static. Can you just
> confirm my interpretation.

I am not Michael, but FWIW I think that is sensible.

```

## Michael Haggerty, 2016-06-09 12:40

Subject: Re: [PATCH] refs: mark the file-local vtable symbols as static
Message-ID: <575963BD.6050302@alum.mit.edu>
URL: https://gitlist.dev/e/575963BD.6050302%40alum.mit.edu
In-Reply-To: <xmqqfusnldc4.fsf@gitster.mtv.corp.google.com>

```
On 06/08/2016 08:55 PM, Junio C Hamano wrote:
> Ramsay Jones <ramsay@ramsayjones.plus.com> writes:
> 
>> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
>> ---
>>
>> Hi Michael, Junio,
>>
>> I would normally ask you to squash this into the relevant patch when
>> you next re-roll your 'mh/ref-iterators' branch, but this has already
>> been merged into next. (I normally have a bit more time ... sorry!).
>>
>> Perhaps, after the release, when the next branch is re-wound/re-built,
>> this could be squashed into your branch then.
> 
> Yup, sounds like a plan.
> 
>>
>> Anyway, after applying this patch, the following symbols are still
>> 'public but unused':
>>
>> 	> refs/files-backend.o	- files_reflog_iterator_begin
>> 	> refs/iterator.o	- is_empty_ref_iterator
>> 	> refs/iterator.o	- merge_ref_iterator_begin
>>
>> These all look (potentially) useful for the implementation of
>> additional 'ref-iter' types and look to be part of the _internal_
>> iterator API - so they should not be marked static. Can you just
>> confirm my interpretation.
> 
> I am not Michael, but FWIW I think that is sensible.

I *am* Michael, and I think your changes look good. Thanks for your review.

I've incorporated your changes with some other changes in a re-roll [1]
in case Junio wants to use it in that form. Please note that two of the
hunks that you are suggesting apply to "refs: introduce an iterator
interface" and the third to "for_each_reflog(): reimplement using
iterators".

Michael

[1] http://article.gmane.org/gmane.comp.version-control.git/296883

```
