Merge branch 'hw/doc-in-header'
* hw/doc-in-header: trace2: move doc to trace2.h submodule-config: move doc to submodule-config.h tree-walk: move doc to tree-walk.h trace: move doc to trace.h run-command: move doc to run-command.h parse-options: add link to doc file in parse-options.h credential: move doc to credential.h argv-array: move doc to argv-array.h cache: move doc to cache.h sigchain: move doc to sigchain.h pathspec: move doc to pathspec.h revision: move doc to revision.h attr: move doc to attr.h refs: move doc to refs.h remote: move doc to remote.h and refspec.h sha1-array: move doc to sha1-array.h merge: move doc to ll-merge.h graph: move doc to graph.h and graph.c dir: move doc to dir.h diff: move doc to diff.h and diffcore.h
This commit is contained in:
59
revision.h
59
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);
|
||||
|
||||
const 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);
|
||||
|
Reference in New Issue
Block a user