merge(3p/git): Merge git upstream at v2.26.2

This commit is contained in:
Vincent Ambo 2020-05-22 17:46:45 +01:00
commit 5229c9b232
1006 changed files with 149006 additions and 60819 deletions

View file

@ -310,19 +310,35 @@ int refs_for_each_branch_ref(struct ref_store *refs,
int refs_for_each_remote_ref(struct ref_store *refs,
each_ref_fn fn, void *cb_data);
/* just iterates the head ref. */
int head_ref(each_ref_fn fn, void *cb_data);
/* iterates all refs. */
int for_each_ref(each_ref_fn fn, void *cb_data);
/**
* iterates all refs which have a defined prefix and strips that prefix from
* the passed variable refname.
*/
int for_each_ref_in(const char *prefix, each_ref_fn fn, void *cb_data);
int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix,
each_ref_fn fn, void *cb_data,
unsigned int broken);
int for_each_fullref_in(const char *prefix, each_ref_fn fn, void *cb_data,
unsigned int broken);
/**
* iterate refs from the respective area.
*/
int for_each_tag_ref(each_ref_fn fn, void *cb_data);
int for_each_branch_ref(each_ref_fn fn, void *cb_data);
int for_each_remote_ref(each_ref_fn fn, void *cb_data);
int for_each_replace_ref(struct repository *r, each_repo_ref_fn fn, void *cb_data);
/* iterates all refs that match the specified glob pattern. */
int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data);
int for_each_glob_ref_in(each_ref_fn fn, const char *pattern,
const char *prefix, void *cb_data);
@ -791,6 +807,41 @@ int reflog_expire(const char *refname, const struct object_id *oid,
int ref_storage_backend_exists(const char *name);
struct ref_store *get_main_ref_store(struct repository *r);
/**
* Submodules
* ----------
*
* If you want to iterate the refs of a submodule you first need to add the
* submodules object database. You can do this by a code-snippet like
* this:
*
* const char *path = "path/to/submodule"
* if (add_submodule_odb(path))
* die("Error submodule '%s' not populated.", path);
*
* `add_submodule_odb()` will return zero on success. If you
* do not do this you will get an error for each ref that it does not point
* to a valid object.
*
* Note: As a side-effect of this you cannot safely assume that all
* objects you lookup are available in superproject. All submodule objects
* will be available the same way as the superprojects objects.
*
* Example:
* --------
*
* ----
* static int handle_remote_ref(const char *refname,
* const unsigned char *sha1, int flags, void *cb_data)
* {
* struct strbuf *output = cb_data;
* strbuf_addf(output, "%s\n", refname);
* return 0;
* }
*
*/
/*
* Return the ref_store instance for the specified submodule. For the
* main repository, use submodule==NULL; such a call cannot fail. For