# [PATCH 0/2] fix up example code in MyFirstObjectWalk tutorial

16 messages from 2021-10-27 to 2021-10-30. Participants: John Cai via GitGitGadget, Eric Sunshine, Junio C Hamano, Bagas Sanjaya.
Thread: https://gitlist.dev/t/56794

## John Cai via GitGitGadget, 2021-10-27 14:05

Subject: [PATCH 0/2] fix up example code in MyFirstObjectWalk tutorial
Message-ID: <pull.1063.git.1635343531.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/pull.1063.git.1635343531.gitgitgadget%40gmail.com

```
MyFirstObjectWalk tutorial was missing directives to add some header files.
Also fixes some initialization code.

John Cai (2):
  docs: fix places that break compliation in MyFirstObjectWalk
  docs: add headers in MyFirstObjectWalk

 Documentation/MyFirstObjectWalk.txt | 32 +++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)


base-commit: e9e5ba39a78c8f5057262d49e261b42a8660d5b9
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1063%2Fjohn-cai%2Fjc-fix-my-first-object-walk-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1063/john-cai/jc-fix-my-first-object-walk-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1063
-- 
gitgitgadget

```

## John Cai via GitGitGadget, 2021-10-27 14:05

Subject: [PATCH 1/2] docs: fix places that break compliation in MyFirstObjectWalk
Message-ID: <6c95f11f110be63dafa10dde5067b6e7eeff1a53.1635343531.git.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/6c95f11f110be63dafa10dde5067b6e7eeff1a53.1635343531.git.gitgitgadget%40gmail.com
In-Reply-To: <pull.1063.git.1635343531.gitgitgadget@gmail.com>

```
From: John Cai <johncai86@gmail.com>

Two errors in the example code caused compilation failures due to
a missing semi-colon as well as initialization with an empty struct.
This commit fixes that to make the MyFirstObjectWalk tutorial easier to
follow.

Signed-off-by: John Cai <johncai86@gmail.com>
---
 Documentation/MyFirstObjectWalk.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt
index 45eb84d8b48..bf0a7c1f766 100644
--- a/Documentation/MyFirstObjectWalk.txt
+++ b/Documentation/MyFirstObjectWalk.txt
@@ -65,7 +65,7 @@ int cmd_walken(int argc, const char **argv, const char *prefix)
 	const char * const walken_usage[] = {
 		N_("git walken"),
 		NULL,
-	}
+	};
 	struct option options[] = {
 		OPT_END()
 	};
@@ -697,7 +697,7 @@ First, we'll need to `#include "list-objects-filter-options.h"` and set up the
 ----
 static void walken_object_walk(struct rev_info *rev)
 {
-	struct list_objects_filter_options filter_options = {};
+	struct list_objects_filter_options filter_options = { 0 };
 
 	...
 ----
-- 
gitgitgadget


```

## John Cai via GitGitGadget, 2021-10-27 14:05

Subject: [PATCH 2/2] docs: add headers in MyFirstObjectWalk
Message-ID: <33cd9b2e8a675bf79132d312da8b7d8f4a2b84a3.1635343531.git.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/33cd9b2e8a675bf79132d312da8b7d8f4a2b84a3.1635343531.git.gitgitgadget%40gmail.com
In-Reply-To: <pull.1063.git.1635343531.gitgitgadget@gmail.com>

```
From: John Cai <johncai86@gmail.com>

In several places, headers need to be included or else the code won't
compile. Since this is the first object walk, it would be nice to
include them in the tutorial to make it easier to follow.

Signed-off-by: John Cai <johncai86@gmail.com>
---
 Documentation/MyFirstObjectWalk.txt | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt
index bf0a7c1f766..ba8cca91b97 100644
--- a/Documentation/MyFirstObjectWalk.txt
+++ b/Documentation/MyFirstObjectWalk.txt
@@ -57,9 +57,14 @@ command). So we will send our debug output to `trace_printf()` instead. When
 running, enable trace output by setting the environment variable `GIT_TRACE`.
 
 Add usage text and `-h` handling, like all subcommands should consistently do
-(our test suite will notice and complain if you fail to do so).
+(our test suite will notice and complain if you fail to do so). We'll need to include
+the "parse-options.h" header.
 
 ----
+#include "parse-options.h"
+
+...
+
 int cmd_walken(int argc, const char **argv, const char *prefix)
 {
 	const char * const walken_usage[] = {
@@ -195,9 +200,13 @@ Similarly to the default values, we don't have anything to do here yet
 ourselves; however, we should call `git_default_config()` if we aren't calling
 any other existing config callbacks.
 
-Add a new function to `builtin/walken.c`:
+Add a new function to `builtin/walken.c`. We'll also need to include the "config.h" header:
 
 ----
+#include "config.h"
+
+...
+
 static int git_walken_config(const char *var, const char *value, void *cb)
 {
 	/*
@@ -229,8 +238,14 @@ typically done by calling `repo_init_revisions()` with the repository you intend
 to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
 struct.
 
-Add the `struct rev_info` and the `repo_init_revisions()` call:
+Add the `struct rev_info` and the `repo_init_revisions()` call. We'll also need to include
+the "revision.h" header:
+
 ----
+#include "revision.h"
+
+...
+
 int cmd_walken(int argc, const char **argv, const char *prefix)
 {
 	/* This can go wherever you like in your declarations.*/
@@ -624,9 +639,14 @@ static void walken_object_walk(struct rev_info *rev)
 ----
 
 Let's start by calling just the unfiltered walk and reporting our counts.
-Complete your implementation of `walken_object_walk()`:
+Complete your implementation of `walken_object_walk()`. We'll also need to
+include the "list-objects.h" header.
 
 ----
+#include "list-objects.h"
+
+...
+
 	traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
 
 	printf("commits %d\nblobs %d\ntags %d\ntrees %d\n", commit_count,
-- 
gitgitgadget

```

## Eric Sunshine, 2021-10-27 17:05

Subject: Re: [PATCH 1/2] docs: fix places that break compliation in MyFirstObjectWalk
Message-ID: <CAPig+cTmHT9uZ=c4tGK487=K1905cYoFZcPfMRv7awbqoKHBfQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcTmHT9uZ%3Dc4tGK487%3DK1905cYoFZcPfMRv7awbqoKHBfQ%40mail.gmail.com
In-Reply-To: <6c95f11f110be63dafa10dde5067b6e7eeff1a53.1635343531.git.gitgitgadget@gmail.com>

```
On Wed, Oct 27, 2021 at 10:05 AM John Cai via GitGitGadget
<gitgitgadget@gmail.com> wrote:
> docs: fix places that break compliation in MyFirstObjectWalk

s/compliation/compilation/

> Two errors in the example code caused compilation failures due to
> a missing semi-colon as well as initialization with an empty struct.
> This commit fixes that to make the MyFirstObjectWalk tutorial easier to
> follow.

s/semi-colon/semicolon/ would also be appropriate for the rest of the
project (but not terribly important in a commit message).

> Signed-off-by: John Cai <johncai86@gmail.com>

The patch itself makes perfect sense. Thanks.

```

## Eric Sunshine, 2021-10-27 17:09

Subject: Re: [PATCH 2/2] docs: add headers in MyFirstObjectWalk
Message-ID: <CAPig+cQxfJkV70sP8Ai3EQUrh3Y04WjkhjpG1zup7_gfg90jbg@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcQxfJkV70sP8Ai3EQUrh3Y04WjkhjpG1zup7_gfg90jbg%40mail.gmail.com
In-Reply-To: <33cd9b2e8a675bf79132d312da8b7d8f4a2b84a3.1635343531.git.gitgitgadget@gmail.com>

```
On Wed, Oct 27, 2021 at 10:05 AM John Cai via GitGitGadget
<gitgitgadget@gmail.com> wrote:
> In several places, headers need to be included or else the code won't
> compile. Since this is the first object walk, it would be nice to
> include them in the tutorial to make it easier to follow.
>
> Signed-off-by: John Cai <johncai86@gmail.com>
> ---
> diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt
> @@ -57,9 +57,14 @@ command). So we will send our debug output to `trace_printf()` instead. When
>  Add usage text and `-h` handling, like all subcommands should consistently do
> -(our test suite will notice and complain if you fail to do so).
> +(our test suite will notice and complain if you fail to do so). We'll need to include
> +the "parse-options.h" header.

Makes sense, but we should probably typeset these consistently with
backticks rather than double quotes...

> @@ -195,9 +200,13 @@ Similarly to the default values, we don't have anything to do here yet
> -Add a new function to `builtin/walken.c`:
> +Add a new function to `builtin/walken.c`. We'll also need to include the "config.h" header:

... just as `builtin/walken.c` is typeset with backticks (as are other
pathnames in this document).

> @@ -229,8 +238,14 @@ typically done by calling `repo_init_revisions()` with the repository you intend
> -Add the `struct rev_info` and the `repo_init_revisions()` call:
> +Add the `struct rev_info` and the `repo_init_revisions()` call. We'll also need to include
> +the "revision.h" header:

And so on through the remainder of the patch.

Thanks.

```

## Junio C Hamano, 2021-10-27 21:17

Subject: Re: [PATCH 2/2] docs: add headers in MyFirstObjectWalk
Message-ID: <xmqqk0hyupzo.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqk0hyupzo.fsf%40gitster.g
In-Reply-To: <33cd9b2e8a675bf79132d312da8b7d8f4a2b84a3.1635343531.git.gitgitgadget@gmail.com>

```
"John Cai via GitGitGadget" <gitgitgadget@gmail.com> writes:

>  Add usage text and `-h` handling, like all subcommands should consistently do
> -(our test suite will notice and complain if you fail to do so).
> +(our test suite will notice and complain if you fail to do so). We'll need to include
> +the "parse-options.h" header.

OK, but wrap this overlong line.  All the lines updated by this
patch, except the one in the last hunk, have become overly long.

[jc: cc'ed the primary author of the document to sanity checking]

Thanks.

>  
>  ----
> +#include "parse-options.h"
> +
> +...
> +
>  int cmd_walken(int argc, const char **argv, const char *prefix)
>  {
>  	const char * const walken_usage[] = {
> @@ -195,9 +200,13 @@ Similarly to the default values, we don't have anything to do here yet
>  ourselves; however, we should call `git_default_config()` if we aren't calling
>  any other existing config callbacks.
>  
> -Add a new function to `builtin/walken.c`:
> +Add a new function to `builtin/walken.c`. We'll also need to include the "config.h" header:
>  
>  ----
> +#include "config.h"
> +
> +...
> +
>  static int git_walken_config(const char *var, const char *value, void *cb)
>  {
>  	/*
> @@ -229,8 +238,14 @@ typically done by calling `repo_init_revisions()` with the repository you intend
>  to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
>  struct.
>  
> -Add the `struct rev_info` and the `repo_init_revisions()` call:
> +Add the `struct rev_info` and the `repo_init_revisions()` call. We'll also need to include
> +the "revision.h" header:
> +
>  ----
> +#include "revision.h"
> +
> +...
> +
>  int cmd_walken(int argc, const char **argv, const char *prefix)
>  {
>  	/* This can go wherever you like in your declarations.*/
> @@ -624,9 +639,14 @@ static void walken_object_walk(struct rev_info *rev)
>  ----
>  
>  Let's start by calling just the unfiltered walk and reporting our counts.
> -Complete your implementation of `walken_object_walk()`:
> +Complete your implementation of `walken_object_walk()`. We'll also need to
> +include the "list-objects.h" header.
>  
>  ----
> +#include "list-objects.h"
> +
> +...
> +
>  	traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
>  
>  	printf("commits %d\nblobs %d\ntags %d\ntrees %d\n", commit_count,

```

## John Cai via GitGitGadget, 2021-10-29 17:58

Subject: [PATCH v2 0/2] fix up example code in MyFirstObjectWalk tutorial
Message-ID: <pull.1063.v2.git.1635530296.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/pull.1063.v2.git.1635530296.gitgitgadget%40gmail.com
In-Reply-To: <pull.1063.git.1635343531.gitgitgadget@gmail.com>

```
MyFirstObjectWalk tutorial was missing directives to add some header files.
Also fixes some initialization code.

Changes since v1:

 * added back ticks to header file names
 * wrapped overly long lines

John Cai (2):
  docs: fix places that break compilation in MyFirstObjectWalk
  docs: add headers in MyFirstObjectWalk

 Documentation/MyFirstObjectWalk.txt | 31 ++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)


base-commit: e9e5ba39a78c8f5057262d49e261b42a8660d5b9
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1063%2Fjohn-cai%2Fjc-fix-my-first-object-walk-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1063/john-cai/jc-fix-my-first-object-walk-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1063

Range-diff vs v1:

 1:  6c95f11f110 ! 1:  5c9deaf0bcc docs: fix places that break compliation in MyFirstObjectWalk
     @@ Metadata
      Author: John Cai <johncai86@gmail.com>
      
       ## Commit message ##
     -    docs: fix places that break compliation in MyFirstObjectWalk
     +    docs: fix places that break compilation in MyFirstObjectWalk
      
          Two errors in the example code caused compilation failures due to
     -    a missing semi-colon as well as initialization with an empty struct.
     +    a missing semicolon as well as initialization with an empty struct.
          This commit fixes that to make the MyFirstObjectWalk tutorial easier to
          follow.
      
          Signed-off-by: John Cai <johncai86@gmail.com>
      
       ## Documentation/MyFirstObjectWalk.txt ##
     +@@ Documentation/MyFirstObjectWalk.txt: running, enable trace output by setting the environment variable `GIT_TRACE`.
     + 
     + Add usage text and `-h` handling, like all subcommands should consistently do
     + (our test suite will notice and complain if you fail to do so).
     ++We'll need to include the `parse-options.h` header.
     + 
     + ----
     + int cmd_walken(int argc, const char **argv, const char *prefix)
      @@ Documentation/MyFirstObjectWalk.txt: int cmd_walken(int argc, const char **argv, const char *prefix)
       	const char * const walken_usage[] = {
       		N_("git walken"),
     @@ Documentation/MyFirstObjectWalk.txt: int cmd_walken(int argc, const char **argv,
       	struct option options[] = {
       		OPT_END()
       	};
     +@@ Documentation/MyFirstObjectWalk.txt: Similarly to the default values, we don't have anything to do here yet
     + ourselves; however, we should call `git_default_config()` if we aren't calling
     + any other existing config callbacks.
     + 
     +-Add a new function to `builtin/walken.c`:
     ++Add a new function to `builtin/walken.c`.
     ++We'll also need to include the `config.h` header:
     + 
     + ----
     + static int git_walken_config(const char *var, const char *value, void *cb)
     +@@ Documentation/MyFirstObjectWalk.txt: typically done by calling `repo_init_revisions()` with the repository you intend
     + to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
     + struct.
     + 
     +-Add the `struct rev_info` and the `repo_init_revisions()` call:
     ++Add the `struct rev_info` and the `repo_init_revisions()` call.
     ++We'll also need to include the `revision.h` header:
     ++
     + ----
     + int cmd_walken(int argc, const char **argv, const char *prefix)
     + {
     +@@ Documentation/MyFirstObjectWalk.txt: static void walken_object_walk(struct rev_info *rev)
     + ----
     + 
     + Let's start by calling just the unfiltered walk and reporting our counts.
     +-Complete your implementation of `walken_object_walk()`:
     ++Complete your implementation of `walken_object_walk()`.
     ++We'll also need to include the `list-objects.h` header.
     + 
     + ----
     + 	traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
      @@ Documentation/MyFirstObjectWalk.txt: First, we'll need to `#include "list-objects-filter-options.h"` and set up the
       ----
       static void walken_object_walk(struct rev_info *rev)
 2:  33cd9b2e8a6 ! 2:  7268f00c11f docs: add headers in MyFirstObjectWalk
     @@ Commit message
          Signed-off-by: John Cai <johncai86@gmail.com>
      
       ## Documentation/MyFirstObjectWalk.txt ##
     -@@ Documentation/MyFirstObjectWalk.txt: command). So we will send our debug output to `trace_printf()` instead. When
     - running, enable trace output by setting the environment variable `GIT_TRACE`.
     - 
     - Add usage text and `-h` handling, like all subcommands should consistently do
     --(our test suite will notice and complain if you fail to do so).
     -+(our test suite will notice and complain if you fail to do so). We'll need to include
     -+the "parse-options.h" header.
     +@@ Documentation/MyFirstObjectWalk.txt: Add usage text and `-h` handling, like all subcommands should consistently do
     + We'll need to include the `parse-options.h` header.
       
       ----
      +#include "parse-options.h"
     @@ Documentation/MyFirstObjectWalk.txt: command). So we will send our debug output
       int cmd_walken(int argc, const char **argv, const char *prefix)
       {
       	const char * const walken_usage[] = {
     -@@ Documentation/MyFirstObjectWalk.txt: Similarly to the default values, we don't have anything to do here yet
     - ourselves; however, we should call `git_default_config()` if we aren't calling
     - any other existing config callbacks.
     - 
     --Add a new function to `builtin/walken.c`:
     -+Add a new function to `builtin/walken.c`. We'll also need to include the "config.h" header:
     +@@ Documentation/MyFirstObjectWalk.txt: Add a new function to `builtin/walken.c`.
     + We'll also need to include the `config.h` header:
       
       ----
      +#include "config.h"
     @@ Documentation/MyFirstObjectWalk.txt: Similarly to the default values, we don't h
       static int git_walken_config(const char *var, const char *value, void *cb)
       {
       	/*
     -@@ Documentation/MyFirstObjectWalk.txt: typically done by calling `repo_init_revisions()` with the repository you intend
     - to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
     - struct.
     +@@ Documentation/MyFirstObjectWalk.txt: Add the `struct rev_info` and the `repo_init_revisions()` call.
     + We'll also need to include the `revision.h` header:
       
     --Add the `struct rev_info` and the `repo_init_revisions()` call:
     -+Add the `struct rev_info` and the `repo_init_revisions()` call. We'll also need to include
     -+the "revision.h" header:
     -+
       ----
      +#include "revision.h"
      +
     @@ Documentation/MyFirstObjectWalk.txt: typically done by calling `repo_init_revisi
       int cmd_walken(int argc, const char **argv, const char *prefix)
       {
       	/* This can go wherever you like in your declarations.*/
     -@@ Documentation/MyFirstObjectWalk.txt: static void walken_object_walk(struct rev_info *rev)
     - ----
     - 
     - Let's start by calling just the unfiltered walk and reporting our counts.
     --Complete your implementation of `walken_object_walk()`:
     -+Complete your implementation of `walken_object_walk()`. We'll also need to
     -+include the "list-objects.h" header.
     +@@ Documentation/MyFirstObjectWalk.txt: Complete your implementation of `walken_object_walk()`.
     + We'll also need to include the `list-objects.h` header.
       
       ----
      +#include "list-objects.h"

-- 
gitgitgadget

```

## John Cai via GitGitGadget, 2021-10-29 17:58

Subject: [PATCH v2 1/2] docs: fix places that break compilation in MyFirstObjectWalk
Message-ID: <5c9deaf0bccfe158c7f410f084529850a33b7fd0.1635530296.git.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/5c9deaf0bccfe158c7f410f084529850a33b7fd0.1635530296.git.gitgitgadget%40gmail.com
In-Reply-To: <pull.1063.v2.git.1635530296.gitgitgadget@gmail.com>

```
From: John Cai <johncai86@gmail.com>

Two errors in the example code caused compilation failures due to
a missing semicolon as well as initialization with an empty struct.
This commit fixes that to make the MyFirstObjectWalk tutorial easier to
follow.

Signed-off-by: John Cai <johncai86@gmail.com>
---
 Documentation/MyFirstObjectWalk.txt | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt
index 45eb84d8b48..e22615105c0 100644
--- a/Documentation/MyFirstObjectWalk.txt
+++ b/Documentation/MyFirstObjectWalk.txt
@@ -58,6 +58,7 @@ running, enable trace output by setting the environment variable `GIT_TRACE`.
 
 Add usage text and `-h` handling, like all subcommands should consistently do
 (our test suite will notice and complain if you fail to do so).
+We'll need to include the `parse-options.h` header.
 
 ----
 int cmd_walken(int argc, const char **argv, const char *prefix)
@@ -65,7 +66,7 @@ int cmd_walken(int argc, const char **argv, const char *prefix)
 	const char * const walken_usage[] = {
 		N_("git walken"),
 		NULL,
-	}
+	};
 	struct option options[] = {
 		OPT_END()
 	};
@@ -195,7 +196,8 @@ Similarly to the default values, we don't have anything to do here yet
 ourselves; however, we should call `git_default_config()` if we aren't calling
 any other existing config callbacks.
 
-Add a new function to `builtin/walken.c`:
+Add a new function to `builtin/walken.c`.
+We'll also need to include the `config.h` header:
 
 ----
 static int git_walken_config(const char *var, const char *value, void *cb)
@@ -229,7 +231,9 @@ typically done by calling `repo_init_revisions()` with the repository you intend
 to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
 struct.
 
-Add the `struct rev_info` and the `repo_init_revisions()` call:
+Add the `struct rev_info` and the `repo_init_revisions()` call.
+We'll also need to include the `revision.h` header:
+
 ----
 int cmd_walken(int argc, const char **argv, const char *prefix)
 {
@@ -624,7 +628,8 @@ static void walken_object_walk(struct rev_info *rev)
 ----
 
 Let's start by calling just the unfiltered walk and reporting our counts.
-Complete your implementation of `walken_object_walk()`:
+Complete your implementation of `walken_object_walk()`.
+We'll also need to include the `list-objects.h` header.
 
 ----
 	traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
@@ -697,7 +702,7 @@ First, we'll need to `#include "list-objects-filter-options.h"` and set up the
 ----
 static void walken_object_walk(struct rev_info *rev)
 {
-	struct list_objects_filter_options filter_options = {};
+	struct list_objects_filter_options filter_options = { 0 };
 
 	...
 ----
-- 
gitgitgadget


```

## John Cai via GitGitGadget, 2021-10-29 17:58

Subject: [PATCH v2 2/2] docs: add headers in MyFirstObjectWalk
Message-ID: <7268f00c11fc0b9ece99f6a2940c124892791768.1635530296.git.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/7268f00c11fc0b9ece99f6a2940c124892791768.1635530296.git.gitgitgadget%40gmail.com
In-Reply-To: <pull.1063.v2.git.1635530296.gitgitgadget@gmail.com>

```
From: John Cai <johncai86@gmail.com>

In several places, headers need to be included or else the code won't
compile. Since this is the first object walk, it would be nice to
include them in the tutorial to make it easier to follow.

Signed-off-by: John Cai <johncai86@gmail.com>
---
 Documentation/MyFirstObjectWalk.txt | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt
index e22615105c0..ca267941f3e 100644
--- a/Documentation/MyFirstObjectWalk.txt
+++ b/Documentation/MyFirstObjectWalk.txt
@@ -61,6 +61,10 @@ Add usage text and `-h` handling, like all subcommands should consistently do
 We'll need to include the `parse-options.h` header.
 
 ----
+#include "parse-options.h"
+
+...
+
 int cmd_walken(int argc, const char **argv, const char *prefix)
 {
 	const char * const walken_usage[] = {
@@ -200,6 +204,10 @@ Add a new function to `builtin/walken.c`.
 We'll also need to include the `config.h` header:
 
 ----
+#include "config.h"
+
+...
+
 static int git_walken_config(const char *var, const char *value, void *cb)
 {
 	/*
@@ -235,6 +243,10 @@ Add the `struct rev_info` and the `repo_init_revisions()` call.
 We'll also need to include the `revision.h` header:
 
 ----
+#include "revision.h"
+
+...
+
 int cmd_walken(int argc, const char **argv, const char *prefix)
 {
 	/* This can go wherever you like in your declarations.*/
@@ -632,6 +644,10 @@ Complete your implementation of `walken_object_walk()`.
 We'll also need to include the `list-objects.h` header.
 
 ----
+#include "list-objects.h"
+
+...
+
 	traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
 
 	printf("commits %d\nblobs %d\ntags %d\ntrees %d\n", commit_count,
-- 
gitgitgadget

```

## Eric Sunshine, 2021-10-29 18:04

Subject: Re: [PATCH v2 1/2] docs: fix places that break compilation in MyFirstObjectWalk
Message-ID: <CAPig+cRzdzK7f=+38u-RuwL80WPoPvX8pwr8GK5vebvuQH5yUg@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcRzdzK7f%3D%2B38u-RuwL80WPoPvX8pwr8GK5vebvuQH5yUg%40mail.gmail.com
In-Reply-To: <5c9deaf0bccfe158c7f410f084529850a33b7fd0.1635530296.git.gitgitgadget@gmail.com>

```
On Fri, Oct 29, 2021 at 1:58 PM John Cai via GitGitGadget
<gitgitgadget@gmail.com> wrote:
> Two errors in the example code caused compilation failures due to
> a missing semicolon as well as initialization with an empty struct.
> This commit fixes that to make the MyFirstObjectWalk tutorial easier to
> follow.
>
> Signed-off-by: John Cai <johncai86@gmail.com>
> ---
> diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt
> @@ -58,6 +58,7 @@ running, enable trace output by setting the environment variable `GIT_TRACE`.
>  Add usage text and `-h` handling, like all subcommands should consistently do
>  (our test suite will notice and complain if you fail to do so).
> +We'll need to include the `parse-options.h` header.

It seems like this change belongs in patch [2/2].

> @@ -65,7 +66,7 @@ int cmd_walken(int argc, const char **argv, const char *prefix)
>         const char * const walken_usage[] = {
>                 N_("git walken"),
>                 NULL,
> -       }
> +       };

Whereas, this change correctly resides in patch [1/2].

>         struct option options[] = {
>                 OPT_END()
>         };
> @@ -195,7 +196,8 @@ Similarly to the default values, we don't have anything to do here yet
>  ourselves; however, we should call `git_default_config()` if we aren't calling
>  any other existing config callbacks.
>
> -Add a new function to `builtin/walken.c`:
> +Add a new function to `builtin/walken.c`.
> +We'll also need to include the `config.h` header:

Should be in patch [2/2].

> @@ -229,7 +231,9 @@ typically done by calling `repo_init_revisions()` with the repository you intend
>  to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
>  struct.
>
> -Add the `struct rev_info` and the `repo_init_revisions()` call:
> +Add the `struct rev_info` and the `repo_init_revisions()` call.
> +We'll also need to include the `revision.h` header:

Patch [2/2].

> @@ -624,7 +628,8 @@ static void walken_object_walk(struct rev_info *rev)
>  Let's start by calling just the unfiltered walk and reporting our counts.
> -Complete your implementation of `walken_object_walk()`:
> +Complete your implementation of `walken_object_walk()`.
> +We'll also need to include the `list-objects.h` header.

Also patch [2/2].

> @@ -697,7 +702,7 @@ First, we'll need to `#include "list-objects-filter-options.h"` and set up the
>  static void walken_object_walk(struct rev_info *rev)
>  {
> -       struct list_objects_filter_options filter_options = {};
> +       struct list_objects_filter_options filter_options = { 0 };

Good, this change belongs here in patch [1/2].

```

## John Cai via GitGitGadget, 2021-10-29 19:52

Subject: [PATCH v3 0/2] fix up example code in MyFirstObjectWalk tutorial
Message-ID: <pull.1063.v3.git.1635537163.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/pull.1063.v3.git.1635537163.gitgitgadget%40gmail.com
In-Reply-To: <pull.1063.v2.git.1635530296.gitgitgadget@gmail.com>

```
MyFirstObjectWalk tutorial was missing directives to add some header files.
Also fixes some initialization code.

Changes since v1:

 * added back ticks to header file names
 * wrapped overly long lines

Changes since v2:

 * fixed commit organization

John Cai (2):
  docs: fix places that break compilation in MyFirstObjectWalk
  docs: add headers in MyFirstObjectWalk

 Documentation/MyFirstObjectWalk.txt | 31 ++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)


base-commit: e9e5ba39a78c8f5057262d49e261b42a8660d5b9
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1063%2Fjohn-cai%2Fjc-fix-my-first-object-walk-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1063/john-cai/jc-fix-my-first-object-walk-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/1063

Range-diff vs v2:

 1:  5c9deaf0bcc ! 1:  f9481c77e2d docs: fix places that break compilation in MyFirstObjectWalk
     @@ Commit message
          Signed-off-by: John Cai <johncai86@gmail.com>
      
       ## Documentation/MyFirstObjectWalk.txt ##
     -@@ Documentation/MyFirstObjectWalk.txt: running, enable trace output by setting the environment variable `GIT_TRACE`.
     - 
     - Add usage text and `-h` handling, like all subcommands should consistently do
     - (our test suite will notice and complain if you fail to do so).
     -+We'll need to include the `parse-options.h` header.
     - 
     - ----
     - int cmd_walken(int argc, const char **argv, const char *prefix)
      @@ Documentation/MyFirstObjectWalk.txt: int cmd_walken(int argc, const char **argv, const char *prefix)
       	const char * const walken_usage[] = {
       		N_("git walken"),
     @@ Documentation/MyFirstObjectWalk.txt: int cmd_walken(int argc, const char **argv,
       	struct option options[] = {
       		OPT_END()
       	};
     -@@ Documentation/MyFirstObjectWalk.txt: Similarly to the default values, we don't have anything to do here yet
     - ourselves; however, we should call `git_default_config()` if we aren't calling
     - any other existing config callbacks.
     - 
     --Add a new function to `builtin/walken.c`:
     -+Add a new function to `builtin/walken.c`.
     -+We'll also need to include the `config.h` header:
     - 
     - ----
     - static int git_walken_config(const char *var, const char *value, void *cb)
     -@@ Documentation/MyFirstObjectWalk.txt: typically done by calling `repo_init_revisions()` with the repository you intend
     - to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
     - struct.
     - 
     --Add the `struct rev_info` and the `repo_init_revisions()` call:
     -+Add the `struct rev_info` and the `repo_init_revisions()` call.
     -+We'll also need to include the `revision.h` header:
     -+
     - ----
     - int cmd_walken(int argc, const char **argv, const char *prefix)
     - {
     -@@ Documentation/MyFirstObjectWalk.txt: static void walken_object_walk(struct rev_info *rev)
     - ----
     - 
     - Let's start by calling just the unfiltered walk and reporting our counts.
     --Complete your implementation of `walken_object_walk()`:
     -+Complete your implementation of `walken_object_walk()`.
     -+We'll also need to include the `list-objects.h` header.
     - 
     - ----
     - 	traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
      @@ Documentation/MyFirstObjectWalk.txt: First, we'll need to `#include "list-objects-filter-options.h"` and set up the
       ----
       static void walken_object_walk(struct rev_info *rev)
 2:  7268f00c11f ! 2:  1535671dd6a docs: add headers in MyFirstObjectWalk
     @@ Commit message
          Signed-off-by: John Cai <johncai86@gmail.com>
      
       ## Documentation/MyFirstObjectWalk.txt ##
     -@@ Documentation/MyFirstObjectWalk.txt: Add usage text and `-h` handling, like all subcommands should consistently do
     - We'll need to include the `parse-options.h` header.
     +@@ Documentation/MyFirstObjectWalk.txt: running, enable trace output by setting the environment variable `GIT_TRACE`.
     + 
     + Add usage text and `-h` handling, like all subcommands should consistently do
     + (our test suite will notice and complain if you fail to do so).
     ++We'll need to include the `parse-options.h` header.
       
       ----
      +#include "parse-options.h"
     @@ Documentation/MyFirstObjectWalk.txt: Add usage text and `-h` handling, like all
       int cmd_walken(int argc, const char **argv, const char *prefix)
       {
       	const char * const walken_usage[] = {
     -@@ Documentation/MyFirstObjectWalk.txt: Add a new function to `builtin/walken.c`.
     - We'll also need to include the `config.h` header:
     +@@ Documentation/MyFirstObjectWalk.txt: Similarly to the default values, we don't have anything to do here yet
     + ourselves; however, we should call `git_default_config()` if we aren't calling
     + any other existing config callbacks.
     + 
     +-Add a new function to `builtin/walken.c`:
     ++Add a new function to `builtin/walken.c`.
     ++We'll also need to include the `config.h` header:
       
       ----
      +#include "config.h"
     @@ Documentation/MyFirstObjectWalk.txt: Add a new function to `builtin/walken.c`.
       static int git_walken_config(const char *var, const char *value, void *cb)
       {
       	/*
     -@@ Documentation/MyFirstObjectWalk.txt: Add the `struct rev_info` and the `repo_init_revisions()` call.
     - We'll also need to include the `revision.h` header:
     +@@ Documentation/MyFirstObjectWalk.txt: typically done by calling `repo_init_revisions()` with the repository you intend
     + to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
     + struct.
       
     +-Add the `struct rev_info` and the `repo_init_revisions()` call:
     ++Add the `struct rev_info` and the `repo_init_revisions()` call.
     ++We'll also need to include the `revision.h` header:
     ++
       ----
      +#include "revision.h"
      +
     @@ Documentation/MyFirstObjectWalk.txt: Add the `struct rev_info` and the `repo_ini
       int cmd_walken(int argc, const char **argv, const char *prefix)
       {
       	/* This can go wherever you like in your declarations.*/
     -@@ Documentation/MyFirstObjectWalk.txt: Complete your implementation of `walken_object_walk()`.
     - We'll also need to include the `list-objects.h` header.
     +@@ Documentation/MyFirstObjectWalk.txt: static void walken_object_walk(struct rev_info *rev)
     + ----
     + 
     + Let's start by calling just the unfiltered walk and reporting our counts.
     +-Complete your implementation of `walken_object_walk()`:
     ++Complete your implementation of `walken_object_walk()`.
     ++We'll also need to include the `list-objects.h` header.
       
       ----
      +#include "list-objects.h"

-- 
gitgitgadget

```

## John Cai via GitGitGadget, 2021-10-29 19:52

Subject: [PATCH v3 1/2] docs: fix places that break compilation in MyFirstObjectWalk
Message-ID: <f9481c77e2d42038196a587b4a637f4277f0dda7.1635537163.git.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/f9481c77e2d42038196a587b4a637f4277f0dda7.1635537163.git.gitgitgadget%40gmail.com
In-Reply-To: <pull.1063.v3.git.1635537163.gitgitgadget@gmail.com>

```
From: John Cai <johncai86@gmail.com>

Two errors in the example code caused compilation failures due to
a missing semicolon as well as initialization with an empty struct.
This commit fixes that to make the MyFirstObjectWalk tutorial easier to
follow.

Signed-off-by: John Cai <johncai86@gmail.com>
---
 Documentation/MyFirstObjectWalk.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt
index 45eb84d8b48..bf0a7c1f766 100644
--- a/Documentation/MyFirstObjectWalk.txt
+++ b/Documentation/MyFirstObjectWalk.txt
@@ -65,7 +65,7 @@ int cmd_walken(int argc, const char **argv, const char *prefix)
 	const char * const walken_usage[] = {
 		N_("git walken"),
 		NULL,
-	}
+	};
 	struct option options[] = {
 		OPT_END()
 	};
@@ -697,7 +697,7 @@ First, we'll need to `#include "list-objects-filter-options.h"` and set up the
 ----
 static void walken_object_walk(struct rev_info *rev)
 {
-	struct list_objects_filter_options filter_options = {};
+	struct list_objects_filter_options filter_options = { 0 };
 
 	...
 ----
-- 
gitgitgadget


```

## John Cai via GitGitGadget, 2021-10-29 19:52

Subject: [PATCH v3 2/2] docs: add headers in MyFirstObjectWalk
Message-ID: <1535671dd6af917246ba642b00fc51f7a8f29edf.1635537163.git.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/1535671dd6af917246ba642b00fc51f7a8f29edf.1635537163.git.gitgitgadget%40gmail.com
In-Reply-To: <pull.1063.v3.git.1635537163.gitgitgadget@gmail.com>

```
From: John Cai <johncai86@gmail.com>

In several places, headers need to be included or else the code won't
compile. Since this is the first object walk, it would be nice to
include them in the tutorial to make it easier to follow.

Signed-off-by: John Cai <johncai86@gmail.com>
---
 Documentation/MyFirstObjectWalk.txt | 27 ++++++++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt
index bf0a7c1f766..ca267941f3e 100644
--- a/Documentation/MyFirstObjectWalk.txt
+++ b/Documentation/MyFirstObjectWalk.txt
@@ -58,8 +58,13 @@ running, enable trace output by setting the environment variable `GIT_TRACE`.
 
 Add usage text and `-h` handling, like all subcommands should consistently do
 (our test suite will notice and complain if you fail to do so).
+We'll need to include the `parse-options.h` header.
 
 ----
+#include "parse-options.h"
+
+...
+
 int cmd_walken(int argc, const char **argv, const char *prefix)
 {
 	const char * const walken_usage[] = {
@@ -195,9 +200,14 @@ Similarly to the default values, we don't have anything to do here yet
 ourselves; however, we should call `git_default_config()` if we aren't calling
 any other existing config callbacks.
 
-Add a new function to `builtin/walken.c`:
+Add a new function to `builtin/walken.c`.
+We'll also need to include the `config.h` header:
 
 ----
+#include "config.h"
+
+...
+
 static int git_walken_config(const char *var, const char *value, void *cb)
 {
 	/*
@@ -229,8 +239,14 @@ typically done by calling `repo_init_revisions()` with the repository you intend
 to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
 struct.
 
-Add the `struct rev_info` and the `repo_init_revisions()` call:
+Add the `struct rev_info` and the `repo_init_revisions()` call.
+We'll also need to include the `revision.h` header:
+
 ----
+#include "revision.h"
+
+...
+
 int cmd_walken(int argc, const char **argv, const char *prefix)
 {
 	/* This can go wherever you like in your declarations.*/
@@ -624,9 +640,14 @@ static void walken_object_walk(struct rev_info *rev)
 ----
 
 Let's start by calling just the unfiltered walk and reporting our counts.
-Complete your implementation of `walken_object_walk()`:
+Complete your implementation of `walken_object_walk()`.
+We'll also need to include the `list-objects.h` header.
 
 ----
+#include "list-objects.h"
+
+...
+
 	traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
 
 	printf("commits %d\nblobs %d\ntags %d\ntrees %d\n", commit_count,
-- 
gitgitgadget

```

## Eric Sunshine, 2021-10-29 21:28

Subject: Re: [PATCH v3 0/2] fix up example code in MyFirstObjectWalk tutorial
Message-ID: <CAPig+cQzqUrbu6gdO-0atxP8E5wGUnQQC-ytCKqL+3u_NpXMbQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcQzqUrbu6gdO-0atxP8E5wGUnQQC-ytCKqL%2B3u_NpXMbQ%40mail.gmail.com
In-Reply-To: <pull.1063.v3.git.1635537163.gitgitgadget@gmail.com>

```
On Fri, Oct 29, 2021 at 3:52 PM John Cai via GitGitGadget
<gitgitgadget@gmail.com> wrote:
> MyFirstObjectWalk tutorial was missing directives to add some header files.
> Also fixes some initialization code.
>
> Changes since v1:
>
>  * added back ticks to header file names
>  * wrapped overly long lines
>
> Changes since v2:
>
>  * fixed commit organization

This version looks better. Thanks.

```

## Bagas Sanjaya, 2021-10-30 07:33

Subject: Re: [PATCH 2/2] docs: add headers in MyFirstObjectWalk
Message-ID: <224a256e-8700-047d-bc12-834524a3c8f3@gmail.com>
URL: https://gitlist.dev/e/224a256e-8700-047d-bc12-834524a3c8f3%40gmail.com
In-Reply-To: <33cd9b2e8a675bf79132d312da8b7d8f4a2b84a3.1635343531.git.gitgitgadget@gmail.com>

```
On 27/10/21 21.05, John Cai via GitGitGadget wrote:
> From: John Cai <johncai86@gmail.com>
> 
> In several places, headers need to be included or else the code won't
> compile. Since this is the first object walk, it would be nice to
> include them in the tutorial to make it easier to follow.
> 

Patch title should be "#include missing headers" (dunno?)

-- 
An old man doll... just what I always wanted! - Clara

```

## Eric Sunshine, 2021-10-30 07:49

Subject: Re: [PATCH 2/2] docs: add headers in MyFirstObjectWalk
Message-ID: <CAPig+cQ2TXZtZphdkWQP9W218YUpL3mFbDo1j4Z+SjmACMfDEg@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcQ2TXZtZphdkWQP9W218YUpL3mFbDo1j4Z%2BSjmACMfDEg%40mail.gmail.com
In-Reply-To: <224a256e-8700-047d-bc12-834524a3c8f3@gmail.com>

```
On Sat, Oct 30, 2021 at 3:33 AM Bagas Sanjaya <bagasdotme@gmail.com> wrote:
> On 27/10/21 21.05, John Cai via GitGitGadget wrote:
> > In several places, headers need to be included or else the code won't
> > compile. Since this is the first object walk, it would be nice to
> > include them in the tutorial to make it easier to follow.
>
> Patch title should be "#include missing headers" (dunno?)

If the series was being rerolled for some other reason, making the
commit subject slightly more precise like that might make sense, but
rerolling only for that reason is probably not worth the extra work
for the submitter, the maintainer, and reviewers.

```
