git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 09/10] revision: move doc to revision.h

From
Emily Shaffer <emilyshaffer@google.com>
Date
Oct 29, 2019, 23:57 UTC
Message-ID
<20191029235736.GB229589@google.com>
In-Reply-To
<afab6d5f4ed8cbe8e6dcba9a50282a471b542b13.1572343246.git.gitgitgadget@gmail.com>
On Tue, Oct 29, 2019 at 10:00:45AM +0000, Heba Waly via GitGitGadget wrote:
Show 9 quoted lines
> From: Heba Waly <heba.waly@gmail.com>
> 
> Move the documentation from Documentation/technical/api-revision-walking.txt
> to revision.h as it's easier for the developers to find the usage
> information beside the code instead of looking for it in another doc file.
> 
> Also documentation/technical/api-revision-walking.txt is removed because the
> information it has is now redundant and it'll be hard to keep it up to
> date and synchronized with the documentation in the header file.
This commit looks nice to me.

It also looks like new work for me to update Documentation/MyFirstObjectWalk.txt to reflect this when it's merged later :)

Reviewed-by: Emily Shaffer <emilyshaffer@google.com>
Show 190 quoted lines
> 
> Signed-off-by: Heba Waly <heba.waly@gmail.com>
> ---
>  .../technical/api-revision-walking.txt        | 72 -------------------
>  revision.h                                    | 59 +++++++++++++++
>  2 files changed, 59 insertions(+), 72 deletions(-)
>  delete mode 100644 Documentation/technical/api-revision-walking.txt
> 
> diff --git a/Documentation/technical/api-revision-walking.txt b/Documentation/technical/api-revision-walking.txt
> deleted file mode 100644
> index 03f9ea6ac4..0000000000
> --- a/Documentation/technical/api-revision-walking.txt
> +++ /dev/null
> @@ -1,72 +0,0 @@
> -revision walking API
> -====================
> -
> -The revision walking API offers functions to build a list of revisions
> -and then iterate over that list.
> -
> -Calling sequence
> -----------------
> -
> -The walking API has a given calling sequence: first you need to
> -initialize a rev_info structure, then add revisions to control what kind
> -of revision list do you want to get, finally you can iterate over the
> -revision list.
> -
> -Functions
> ----------
> -
> -`repo_init_revisions`::
> -
> -	Initialize a rev_info structure with default values. The third
> -	parameter may be NULL or can be prefix path, and then the `.prefix`
> -	variable will be set to it. This is typically the first function you
> -	want to call when you want to deal with a revision list. After calling
> -	this function, you are free to customize options, like set
> -	`.ignore_merges` to 0 if you don't want to ignore merges, and so on. See
> -	`revision.h` for a complete list of available options.
> -
> -`add_pending_object`::
> -
> -	This function can be used if you want to add commit objects as revision
> -	information. You can use the `UNINTERESTING` object flag to indicate if
> -	you want to include or exclude the given commit (and commits reachable
> -	from the given commit) from the revision list.
> -+
> -NOTE: If you have the commits as a string list then you probably want to
> -use setup_revisions(), instead of parsing each string and using this
> -function.
> -
> -`setup_revisions`::
> -
> -	Parse revision information, filling in the `rev_info` structure, and
> -	removing the used arguments from the argument list. Returns the number
> -	of arguments left that weren't recognized, which are also moved to the
> -	head of the argument list. The last parameter is used in case no
> -	parameter given by the first two arguments.
> -
> -`prepare_revision_walk`::
> -
> -	Prepares the rev_info structure for a walk. You should check if it
> -	returns any error (non-zero return code) and if it does not, you can
> -	start using get_revision() to do the iteration.
> -
> -`get_revision`::
> -
> -	Takes a pointer to a `rev_info` structure and iterates over it,
> -	returning a `struct commit *` each time you call it. The end of the
> -	revision list is indicated by returning a NULL pointer.
> -
> -`reset_revision_walk`::
> -
> -	Reset the flags used by the revision walking api. You can use
> -	this to do multiple sequential revision walks.
> -
> -Data structures
> ----------------
> -
> -Talk about <revision.h>, things like:
> -
> -* two diff_options, one for path limiting, another for output;
> -* remaining functions;
> -
> -(Linus, JC, Dscho)
> diff --git a/revision.h b/revision.h
> index 4134dc6029..983ffc0f12 100644
> --- a/revision.h
> +++ b/revision.h
> @@ -9,6 +9,19 @@
>  #include "diff.h"
>  #include "commit-slab-decl.h"
>  
> +/**
> + * The revision walking API offers functions to build a list of revisions
> + * and then iterate over that list.
> + *
> + * Calling sequence
> + * ----------------
> + *
> + * The walking API has a given calling sequence: first you need to initialize
> + * a rev_info structure, then add revisions to control what kind of revision
> + * list do you want to get, finally you can iterate over the revision list.
> + *
> + */
> +
>  /* Remember to update object flag allocation in object.h */
>  #define SEEN		(1u<<0)
>  #define UNINTERESTING   (1u<<1)
> @@ -306,11 +319,29 @@ struct setup_revision_opt {
>  #ifndef NO_THE_REPOSITORY_COMPATIBILITY_MACROS
>  #define init_revisions(revs, prefix) repo_init_revisions(the_repository, revs, prefix)
>  #endif
> +
> +/**
> + * Initialize a rev_info structure with default values. The third parameter may
> + * be NULL or can be prefix path, and then the `.prefix` variable will be set
> + * to it. This is typically the first function you want to call when you want
> + * to deal with a revision list. After calling this function, you are free to
> + * customize options, like set `.ignore_merges` to 0 if you don't want to
> + * ignore merges, and so on.
> + */
>  void repo_init_revisions(struct repository *r,
>  			 struct rev_info *revs,
>  			 const char *prefix);
> +
> +/**
> + * Parse revision information, filling in the `rev_info` structure, and
> + * removing the used arguments from the argument list. Returns the number
> + * of arguments left that weren't recognized, which are also moved to the
> + * head of the argument list. The last parameter is used in case no
> + * parameter given by the first two arguments.
> + */
>  int setup_revisions(int argc, const char **argv, struct rev_info *revs,
>  		    struct setup_revision_opt *);
> +
>  void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
>  			const struct option *options,
>  			const char * const usagestr[]);
> @@ -319,9 +350,26 @@ void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
>  int handle_revision_arg(const char *arg, struct rev_info *revs,
>  			int flags, unsigned revarg_opt);
>  
> +/**
> + * Reset the flags used by the revision walking api. You can use this to do
> + * multiple sequential revision walks.
> + */
>  void reset_revision_walk(void);
> +
> +/**
> + * Prepares the rev_info structure for a walk. You should check if it returns
> + * any error (non-zero return code) and if it does not, you can start using
> + * get_revision() to do the iteration.
> + */
>  int prepare_revision_walk(struct rev_info *revs);
> +
> +/**
> + * Takes a pointer to a `rev_info` structure and iterates over it, returning a
> + * `struct commit *` each time you call it. The end of the revision list is
> + * indicated by returning a NULL pointer.
> + */
>  struct commit *get_revision(struct rev_info *revs);
> +
>  char *get_revision_mark(const struct rev_info *revs,
>  			const struct commit *commit);
>  void put_revision_mark(const struct rev_info *revs,
> @@ -333,8 +381,19 @@ void mark_trees_uninteresting_sparse(struct repository *r, struct oidset *trees)
>  
>  void show_object_with_name(FILE *, struct object *, const char *);
>  
> +/**
> + * This function can be used if you want to add commit objects as revision
> + * information. You can use the `UNINTERESTING` object flag to indicate if
> + * you want to include or exclude the given commit (and commits reachable
> + * from the given commit) from the revision list.
> + *
> + * NOTE: If you have the commits as a string list then you probably want to
> + * use setup_revisions(), instead of parsing each string and using this
> + * function.
> + */
>  void add_pending_object(struct rev_info *revs,
>  			struct object *obj, const char *name);
> +
>  void add_pending_oid(struct rev_info *revs,
>  		     const char *name, const struct object_id *oid,
>  		     unsigned int flags);
> -- 
> gitgitgadget
> 
Previous: Heba Waly via GitGitGadgetNext: Heba Waly via GitGitGadget
Message 14 of 123 in “[Outreachy] Move doc to header files”
  1. 00/10 [Outreachy] Move doc to header filesHeba Waly via GitGitGadget, Oct 29, 2019
  2. 01/10 diff: move doc to diff.h and diffcore.hHeba Waly via GitGitGadget, Oct 29, 2019
  3. 03/10 graph: move doc to graph.h and graph.cHeba Waly via GitGitGadget, Oct 29, 2019
  4. 05/10 sha1-array: move doc to sha1-array.hHeba Waly via GitGitGadget, Oct 29, 2019
  5. 08/10 attr: move doc to attr.hHeba Waly via GitGitGadget, Oct 29, 2019
  6. 04/10 merge: move doc to ll-merge.hHeba Waly via GitGitGadget, Oct 29, 2019
  7. Elijah NewrenOct 30, 2019
  8. Heba WalyOct 31, 2019
  9. Junio C HamanoNov 2, 2019
  10. 10/10 pathspec: move doc to pathspec.hHeba Waly via GitGitGadget, Oct 29, 2019
  11. 07/10 refs: move doc to refs.hHeba Waly via GitGitGadget, Oct 29, 2019
  12. 06/10 remote: move doc to remote.h and refspec.hHeba Waly via GitGitGadget, Oct 29, 2019
  13. 09/10 revision: move doc to revision.hHeba Waly via GitGitGadget, Oct 29, 2019
  14. Emily ShafferOct 29, 2019
  15. 02/10 dir: move doc to dir.hHeba Waly via GitGitGadget, Oct 29, 2019
  16. 00/20 [Outreachy] Move doc to header filesHeba Waly via GitGitGadget, Nov 6, 2019
  17. 04/20 merge: move doc to ll-merge.hHeba Waly via GitGitGadget, Nov 6, 2019
  18. 05/20 sha1-array: move doc to sha1-array.hHeba Waly via GitGitGadget, Nov 6, 2019
  19. 06/20 remote: move doc to remote.h and refspec.hHeba Waly via GitGitGadget, Nov 6, 2019
  20. 09/20 revision: move doc to revision.hHeba Waly via GitGitGadget, Nov 6, 2019
  21. 03/20 graph: move doc to graph.h and graph.cHeba Waly via GitGitGadget, Nov 6, 2019
  22. 07/20 refs: move doc to refs.hHeba Waly via GitGitGadget, Nov 6, 2019
  23. 08/20 attr: move doc to attr.hHeba Waly via GitGitGadget, Nov 6, 2019
  24. 02/20 dir: move doc to dir.hHeba Waly via GitGitGadget, Nov 6, 2019
  25. Emily ShafferNov 7, 2019
  26. Heba WalyNov 11, 2019
  27. 13/20 argv-array: move doc to argv-array.hHeba Waly via GitGitGadget, Nov 6, 2019
  28. 16/20 run-command: move doc to run-command.hHeba Waly via GitGitGadget, Nov 6, 2019
  29. 15/20 parse-options: move doc to parse-options.hHeba Waly via GitGitGadget, Nov 6, 2019
  30. Junio C HamanoNov 11, 2019
  31. Heba WalyNov 11, 2019
  32. Junio C HamanoNov 12, 2019
  33. Heba WalyNov 15, 2019
  34. Junio C HamanoNov 15, 2019
  35. Emily ShafferNov 15, 2019
  36. Heba WalyNov 17, 2019
  37. 18/20 tree-walk: move doc to tree-walk.hHeba Waly via GitGitGadget, Nov 6, 2019
  38. 20/20 trace2: move doc to trace2.hHeba Waly via GitGitGadget, Nov 6, 2019
  39. 19/20 submodule-config: move doc to submodule-config.hHeba Waly via GitGitGadget, Nov 6, 2019
  40. 10/20 pathspec: move doc to pathspec.hHeba Waly via GitGitGadget, Nov 6, 2019
  41. Emily ShafferNov 7, 2019
  42. Heba WalyNov 10, 2019
  43. 14/20 credential: move doc to credential.hHeba Waly via GitGitGadget, Nov 6, 2019
  44. 17/20 trace: move doc to trace.hHeba Waly via GitGitGadget, Nov 6, 2019
  45. Emily ShafferNov 7, 2019
  46. 12/20 cache: move doc to cache.hHeba Waly via GitGitGadget, Nov 6, 2019
  47. Emily ShafferNov 6, 2019
  48. 11/20 sigchain: move doc to sigchain.hHeba Waly via GitGitGadget, Nov 6, 2019
  49. Emily ShafferNov 6, 2019
  50. Heba WalyNov 11, 2019
  51. 01/20 diff: move doc to diff.h and diffcore.hHeba Waly via GitGitGadget, Nov 6, 2019
  52. 00/21 [Outreachy] Move doc to header filesHeba Waly via GitGitGadget, Nov 11, 2019
  53. 01/21 diff: move doc to diff.h and diffcore.hHeba Waly via GitGitGadget, Nov 11, 2019
  54. Junio C HamanoNov 12, 2019
  55. Heba WalyNov 14, 2019
  56. 02/21 dir: move doc to dir.hHeba Waly via GitGitGadget, Nov 11, 2019
  57. 03/21 graph: move doc to graph.h and graph.cHeba Waly via GitGitGadget, Nov 11, 2019
  58. 05/21 sha1-array: move doc to sha1-array.hHeba Waly via GitGitGadget, Nov 11, 2019
  59. 04/21 merge: move doc to ll-merge.hHeba Waly via GitGitGadget, Nov 11, 2019
  60. 12/21 cache: move doc to cache.hHeba Waly via GitGitGadget, Nov 11, 2019
  61. Junio C HamanoNov 12, 2019
  62. Heba WalyNov 14, 2019
  63. 06/21 remote: move doc to remote.h and refspec.hHeba Waly via GitGitGadget, Nov 11, 2019
  64. 11/21 sigchain: move doc to sigchain.hHeba Waly via GitGitGadget, Nov 11, 2019
  65. 08/21 attr: move doc to attr.hHeba Waly via GitGitGadget, Nov 11, 2019
  66. 13/21 argv-array: move doc to argv-array.hHeba Waly via GitGitGadget, Nov 11, 2019
  67. 10/21 pathspec: move doc to pathspec.hHeba Waly via GitGitGadget, Nov 11, 2019
  68. 09/21 revision: move doc to revision.hHeba Waly via GitGitGadget, Nov 11, 2019
  69. 07/21 refs: move doc to refs.hHeba Waly via GitGitGadget, Nov 11, 2019
  70. 18/21 tree-walk: move doc to tree-walk.hHeba Waly via GitGitGadget, Nov 11, 2019
  71. 20/21 trace2: move doc to trace2.hHeba Waly via GitGitGadget, Nov 11, 2019
  72. Junio C HamanoNov 12, 2019
  73. Heba WalyNov 14, 2019
  74. 21/21 api-index: remove api doc index filesHeba Waly via GitGitGadget, Nov 11, 2019
  75. 15/21 parse-options: move doc to parse-options.hHeba Waly via GitGitGadget, Nov 11, 2019
  76. 19/21 submodule-config: move doc to submodule-config.hHeba Waly via GitGitGadget, Nov 11, 2019
  77. 16/21 run-command: move doc to run-command.hHeba Waly via GitGitGadget, Nov 11, 2019
  78. 17/21 trace: move doc to trace.hHeba Waly via GitGitGadget, Nov 11, 2019
  79. 14/21 credential: move doc to credential.hHeba Waly via GitGitGadget, Nov 11, 2019
  80. 00/21 [Outreachy] Move doc to header filesHeba Waly via GitGitGadget, Nov 15, 2019
  81. 01/21 diff: move doc to diff.h and diffcore.hHeba Waly via GitGitGadget, Nov 15, 2019
  82. 05/21 sha1-array: move doc to sha1-array.hHeba Waly via GitGitGadget, Nov 15, 2019
  83. 07/21 refs: move doc to refs.hHeba Waly via GitGitGadget, Nov 15, 2019
  84. 09/21 revision: move doc to revision.hHeba Waly via GitGitGadget, Nov 15, 2019
  85. 10/21 pathspec: move doc to pathspec.hHeba Waly via GitGitGadget, Nov 15, 2019
  86. 12/21 cache: move doc to cache.hHeba Waly via GitGitGadget, Nov 15, 2019
  87. 04/21 merge: move doc to ll-merge.hHeba Waly via GitGitGadget, Nov 15, 2019
  88. 11/21 sigchain: move doc to sigchain.hHeba Waly via GitGitGadget, Nov 15, 2019
  89. 08/21 attr: move doc to attr.hHeba Waly via GitGitGadget, Nov 15, 2019
  90. 15/21 parse-options: move doc to parse-options.hHeba Waly via GitGitGadget, Nov 15, 2019
  91. 16/21 run-command: move doc to run-command.hHeba Waly via GitGitGadget, Nov 15, 2019
  92. 19/21 submodule-config: move doc to submodule-config.hHeba Waly via GitGitGadget, Nov 15, 2019
  93. 21/21 api-index: remove api doc index filesHeba Waly via GitGitGadget, Nov 15, 2019
  94. 18/21 tree-walk: move doc to tree-walk.hHeba Waly via GitGitGadget, Nov 15, 2019
  95. 20/21 trace2: move doc to trace2.hHeba Waly via GitGitGadget, Nov 15, 2019
  96. 17/21 trace: move doc to trace.hHeba Waly via GitGitGadget, Nov 15, 2019
  97. 06/21 remote: move doc to remote.h and refspec.hHeba Waly via GitGitGadget, Nov 15, 2019
  98. 14/21 credential: move doc to credential.hHeba Waly via GitGitGadget, Nov 15, 2019
  99. 13/21 argv-array: move doc to argv-array.hHeba Waly via GitGitGadget, Nov 15, 2019
  100. 02/21 dir: move doc to dir.hHeba Waly via GitGitGadget, Nov 15, 2019
  101. 03/21 graph: move doc to graph.h and graph.cHeba Waly via GitGitGadget, Nov 15, 2019
  102. 00/21 [Outreachy] Move doc to header filesHeba Waly via GitGitGadget, Nov 17, 2019
  103. 01/21 diff: move doc to diff.h and diffcore.hHeba Waly via GitGitGadget, Nov 17, 2019
  104. 03/21 graph: move doc to graph.h and graph.cHeba Waly via GitGitGadget, Nov 17, 2019
  105. 02/21 dir: move doc to dir.hHeba Waly via GitGitGadget, Nov 17, 2019
  106. 04/21 merge: move doc to ll-merge.hHeba Waly via GitGitGadget, Nov 17, 2019
  107. 06/21 remote: move doc to remote.h and refspec.hHeba Waly via GitGitGadget, Nov 17, 2019
  108. 05/21 sha1-array: move doc to sha1-array.hHeba Waly via GitGitGadget, Nov 17, 2019
  109. 07/21 refs: move doc to refs.hHeba Waly via GitGitGadget, Nov 17, 2019
  110. 08/21 attr: move doc to attr.hHeba Waly via GitGitGadget, Nov 17, 2019
  111. 09/21 revision: move doc to revision.hHeba Waly via GitGitGadget, Nov 17, 2019
  112. 11/21 sigchain: move doc to sigchain.hHeba Waly via GitGitGadget, Nov 17, 2019
  113. 15/21 parse-options: add link to doc file in parse-options.hHeba Waly via GitGitGadget, Nov 17, 2019
  114. 19/21 submodule-config: move doc to submodule-config.hHeba Waly via GitGitGadget, Nov 17, 2019
  115. 13/21 argv-array: move doc to argv-array.hHeba Waly via GitGitGadget, Nov 17, 2019
  116. 18/21 tree-walk: move doc to tree-walk.hHeba Waly via GitGitGadget, Nov 17, 2019
  117. 16/21 run-command: move doc to run-command.hHeba Waly via GitGitGadget, Nov 17, 2019
  118. 21/21 api-index: remove api doc index filesHeba Waly via GitGitGadget, Nov 17, 2019
  119. 20/21 trace2: move doc to trace2.hHeba Waly via GitGitGadget, Nov 17, 2019
  120. 17/21 trace: move doc to trace.hHeba Waly via GitGitGadget, Nov 17, 2019
  121. 14/21 credential: move doc to credential.hHeba Waly via GitGitGadget, Nov 17, 2019
  122. 12/21 cache: move doc to cache.hHeba Waly via GitGitGadget, Nov 17, 2019
  123. 10/21 pathspec: move doc to pathspec.hHeba Waly via GitGitGadget, Nov 17, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.