Skip to content

Commit 126c1cc

Browse files
HebaWalygitster
authored andcommitted
refs: move doc to refs.h
Move the documentation from Documentation/technical/api-ref-iteration.txt to refs.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-ref-iteration.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. Signed-off-by: Heba Waly <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent d27eb35 commit 126c1cc

File tree

2 files changed

+51
-78
lines changed

2 files changed

+51
-78
lines changed

Documentation/technical/api-ref-iteration.txt

-78
This file was deleted.

refs.h

+51
Original file line numberDiff line numberDiff line change
@@ -310,19 +310,35 @@ int refs_for_each_branch_ref(struct ref_store *refs,
310310
int refs_for_each_remote_ref(struct ref_store *refs,
311311
each_ref_fn fn, void *cb_data);
312312

313+
/* just iterates the head ref. */
313314
int head_ref(each_ref_fn fn, void *cb_data);
315+
316+
/* iterates all refs. */
314317
int for_each_ref(each_ref_fn fn, void *cb_data);
318+
319+
/**
320+
* iterates all refs which have a defined prefix and strips that prefix from
321+
* the passed variable refname.
322+
*/
315323
int for_each_ref_in(const char *prefix, each_ref_fn fn, void *cb_data);
324+
316325
int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix,
317326
each_ref_fn fn, void *cb_data,
318327
unsigned int broken);
319328
int for_each_fullref_in(const char *prefix, each_ref_fn fn, void *cb_data,
320329
unsigned int broken);
330+
331+
/**
332+
* iterate refs from the respective area.
333+
*/
321334
int for_each_tag_ref(each_ref_fn fn, void *cb_data);
322335
int for_each_branch_ref(each_ref_fn fn, void *cb_data);
323336
int for_each_remote_ref(each_ref_fn fn, void *cb_data);
324337
int for_each_replace_ref(struct repository *r, each_repo_ref_fn fn, void *cb_data);
338+
339+
/* iterates all refs that match the specified glob pattern. */
325340
int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data);
341+
326342
int for_each_glob_ref_in(each_ref_fn fn, const char *pattern,
327343
const char *prefix, void *cb_data);
328344

@@ -791,6 +807,41 @@ int reflog_expire(const char *refname, const struct object_id *oid,
791807
int ref_storage_backend_exists(const char *name);
792808

793809
struct ref_store *get_main_ref_store(struct repository *r);
810+
811+
/**
812+
* Submodules
813+
* ----------
814+
*
815+
* If you want to iterate the refs of a submodule you first need to add the
816+
* submodules object database. You can do this by a code-snippet like
817+
* this:
818+
*
819+
* const char *path = "path/to/submodule"
820+
* if (add_submodule_odb(path))
821+
* die("Error submodule '%s' not populated.", path);
822+
*
823+
* `add_submodule_odb()` will return zero on success. If you
824+
* do not do this you will get an error for each ref that it does not point
825+
* to a valid object.
826+
*
827+
* Note: As a side-effect of this you cannot safely assume that all
828+
* objects you lookup are available in superproject. All submodule objects
829+
* will be available the same way as the superprojects objects.
830+
*
831+
* Example:
832+
* --------
833+
*
834+
* ----
835+
* static int handle_remote_ref(const char *refname,
836+
* const unsigned char *sha1, int flags, void *cb_data)
837+
* {
838+
* struct strbuf *output = cb_data;
839+
* strbuf_addf(output, "%s\n", refname);
840+
* return 0;
841+
* }
842+
*
843+
*/
844+
794845
/*
795846
* Return the ref_store instance for the specified submodule. For the
796847
* main repository, use submodule==NULL; such a call cannot fail. For

0 commit comments

Comments
 (0)