]> git.ipfire.org Git - thirdparty/git.git/blame_incremental - refs.h
The seventh batch
[thirdparty/git.git] / refs.h
... / ...
CommitLineData
1#ifndef REFS_H
2#define REFS_H
3
4#include "commit.h"
5#include "repository.h"
6#include "repo-settings.h"
7
8struct fsck_options;
9struct object_id;
10struct ref_store;
11struct strbuf;
12struct string_list;
13struct string_list_item;
14struct worktree;
15
16enum ref_storage_format ref_storage_format_by_name(const char *name);
17const char *ref_storage_format_to_name(enum ref_storage_format ref_storage_format);
18
19enum ref_transaction_error {
20 /* Default error code */
21 REF_TRANSACTION_ERROR_GENERIC = -1,
22 /* Ref name conflict like A vs A/B */
23 REF_TRANSACTION_ERROR_NAME_CONFLICT = -2,
24 /* Ref to be created already exists */
25 REF_TRANSACTION_ERROR_CREATE_EXISTS = -3,
26 /* ref expected but doesn't exist */
27 REF_TRANSACTION_ERROR_NONEXISTENT_REF = -4,
28 /* Provided old_oid or old_target of reference doesn't match actual */
29 REF_TRANSACTION_ERROR_INCORRECT_OLD_VALUE = -5,
30 /* Provided new_oid or new_target is invalid */
31 REF_TRANSACTION_ERROR_INVALID_NEW_VALUE = -6,
32 /* Expected ref to be symref, but is a regular ref */
33 REF_TRANSACTION_ERROR_EXPECTED_SYMREF = -7,
34 /* Cannot create ref due to case-insensitive filesystem */
35 REF_TRANSACTION_ERROR_CASE_CONFLICT = -8,
36};
37
38/*
39 * Resolve a reference, recursively following symbolic references.
40 *
41 * Return the name of the non-symbolic reference that ultimately pointed
42 * at the resolved object name. The return value, if not NULL, is a
43 * pointer into either a static buffer or the input ref.
44 *
45 * If oid is non-NULL, store the referred-to object's name in it.
46 *
47 * If the reference cannot be resolved to an object, the behavior
48 * depends on the RESOLVE_REF_READING flag:
49 *
50 * - If RESOLVE_REF_READING is set, return NULL.
51 *
52 * - If RESOLVE_REF_READING is not set, clear oid and return the name of
53 * the last reference name in the chain, which will either be a non-symbolic
54 * reference or an undefined reference. If this is a prelude to
55 * "writing" to the ref, the return value is the name of the ref
56 * that will actually be created or changed.
57 *
58 * If the RESOLVE_REF_NO_RECURSE flag is passed, only resolves one
59 * level of symbolic reference. The value stored in oid for a symbolic
60 * reference will always be null_oid in this case, and the return
61 * value is the reference that the symref refers to directly.
62 *
63 * If flags is non-NULL, set the value that it points to the
64 * combination of REF_ISPACKED (if the reference was found among the
65 * packed references), REF_ISSYMREF (if the initial reference was a
66 * symbolic reference), REF_BAD_NAME (if the reference name is ill
67 * formed --- see RESOLVE_REF_ALLOW_BAD_NAME below), and REF_ISBROKEN
68 * (if the ref is malformed or has a bad name). See refs.h for more detail
69 * on each flag.
70 *
71 * If ref is not a properly-formatted, normalized reference, return
72 * NULL. If more than MAXDEPTH recursive symbolic lookups are needed,
73 * give up and return NULL.
74 *
75 * RESOLVE_REF_ALLOW_BAD_NAME allows resolving refs even when their
76 * name is invalid according to git-check-ref-format(1). If the name
77 * is bad then the value stored in oid will be null_oid and the two
78 * flags REF_ISBROKEN and REF_BAD_NAME will be set.
79 *
80 * Even with RESOLVE_REF_ALLOW_BAD_NAME, names that escape the refs/
81 * directory and do not consist of all caps and underscores cannot be
82 * resolved. The function returns NULL for such ref names.
83 * Caps and underscores refers to the pseudorefs, such as HEAD,
84 * FETCH_HEAD and friends, that all live outside of the refs/ directory.
85 */
86#define RESOLVE_REF_READING 0x01
87#define RESOLVE_REF_NO_RECURSE 0x02
88#define RESOLVE_REF_ALLOW_BAD_NAME 0x04
89
90const char *refs_resolve_ref_unsafe(struct ref_store *refs,
91 const char *refname,
92 int resolve_flags,
93 struct object_id *oid,
94 int *flags);
95
96char *refs_resolve_refdup(struct ref_store *refs,
97 const char *refname, int resolve_flags,
98 struct object_id *oid, int *flags);
99
100int refs_read_ref_full(struct ref_store *refs, const char *refname,
101 int resolve_flags, struct object_id *oid, int *flags);
102
103int refs_read_ref(struct ref_store *refs, const char *refname, struct object_id *oid);
104
105#define NOT_A_SYMREF -2
106
107/*
108 * Read the symbolic ref named "refname" and write its immediate referent into
109 * the provided buffer. Referent is left empty if "refname" is not a symbolic
110 * ref. It does not resolve the symbolic reference recursively in case the
111 * target is also a symbolic ref.
112 *
113 * Returns 0 on success, -2 if the "refname" is not a symbolic ref,
114 * -1 otherwise.
115 */
116int refs_read_symbolic_ref(struct ref_store *ref_store, const char *refname,
117 struct strbuf *referent);
118
119/*
120 * Return 0 if a reference named refname could be created without
121 * conflicting with the name of an existing reference. Otherwise,
122 * return a negative value and write an explanation to err. If extras
123 * is non-NULL, it is a list of additional refnames with which refname
124 * is not allowed to conflict. If skip is non-NULL, ignore potential
125 * conflicts with refs in skip (e.g., because they are scheduled for
126 * deletion in the same operation). Behavior is undefined if the same
127 * name is listed in both extras and skip.
128 *
129 * Two reference names conflict if one of them exactly matches the
130 * leading components of the other; e.g., "foo/bar" conflicts with
131 * both "foo" and with "foo/bar/baz" but not with "foo/bar" or
132 * "foo/barbados".
133 *
134 * If `initial_transaction` is truish, then all collision checks with
135 * preexisting refs are skipped.
136 *
137 * extras and skip must be sorted.
138 */
139enum ref_transaction_error refs_verify_refname_available(struct ref_store *refs,
140 const char *refname,
141 const struct string_list *extras,
142 const struct string_list *skip,
143 unsigned int initial_transaction,
144 struct strbuf *err);
145
146int refs_ref_exists(struct ref_store *refs, const char *refname);
147
148int should_autocreate_reflog(enum log_refs_config log_all_ref_updates,
149 const char *refname);
150
151int is_branch(const char *refname);
152
153#define REF_STORE_CREATE_ON_DISK_IS_WORKTREE (1 << 0)
154
155int ref_store_create_on_disk(struct ref_store *refs, int flags, struct strbuf *err);
156
157/*
158 * Release all memory and resources associated with the ref store.
159 */
160void ref_store_release(struct ref_store *ref_store);
161
162/*
163 * Remove the ref store from disk. This deletes all associated data.
164 */
165int ref_store_remove_on_disk(struct ref_store *refs, struct strbuf *err);
166
167/*
168 * Return the peeled value of the oid currently being iterated via
169 * for_each_ref(), etc. This is equivalent to calling:
170 *
171 * peel_object(r, oid, &peeled);
172 *
173 * with the "oid" value given to the each_ref_fn callback, except
174 * that some ref storage may be able to answer the query without
175 * actually loading the object in memory.
176 */
177int peel_iterated_oid(struct repository *r,
178 const struct object_id *base, struct object_id *peeled);
179
180/**
181 * Resolve refname in the nested "gitlink" repository in the specified
182 * submodule (which must be non-NULL). If the resolution is
183 * successful, return 0 and set oid to the name of the object;
184 * otherwise, return a non-zero value.
185 */
186int repo_resolve_gitlink_ref(struct repository *r,
187 const char *submodule, const char *refname,
188 struct object_id *oid);
189
190/*
191 * Return true iff abbrev_name is a possible abbreviation for
192 * full_name according to the rules defined by ref_rev_parse_rules in
193 * refs.c.
194 */
195int refname_match(const char *abbrev_name, const char *full_name);
196
197/*
198 * Given a 'prefix' expand it by the rules in 'ref_rev_parse_rules' and add
199 * the results to 'prefixes'
200 */
201struct strvec;
202void expand_ref_prefix(struct strvec *prefixes, const char *prefix);
203
204int expand_ref(struct repository *r, const char *str, int len, struct object_id *oid, char **ref);
205int repo_dwim_ref(struct repository *r, const char *str, int len,
206 struct object_id *oid, char **ref, int nonfatal_dangling_mark);
207int repo_dwim_log(struct repository *r, const char *str, int len, struct object_id *oid, char **ref);
208
209/*
210 * Retrieves the default branch name for newly-initialized repositories.
211 *
212 * The return value is an allocated string.
213 */
214char *repo_default_branch_name(struct repository *r, int quiet);
215
216/*
217 * Copy "name" to "sb", expanding any special @-marks as handled by
218 * repo_interpret_branch_name(). The result is a non-qualified branch name
219 * (so "foo" or "origin/master" instead of "refs/heads/foo" or
220 * "refs/remotes/origin/master").
221 *
222 * Note that the resulting name may not be a syntactically valid refname.
223 *
224 * If "allowed" is non-zero, restrict the set of allowed expansions. See
225 * repo_interpret_branch_name() for details.
226 */
227void copy_branchname(struct strbuf *sb, const char *name,
228 unsigned allowed);
229
230/*
231 * Like copy_branchname() above, but confirm that the result is
232 * syntactically valid to be used as a local branch name in refs/heads/.
233 *
234 * The return value is "0" if the result is valid, and "-1" otherwise.
235 */
236int check_branch_ref(struct strbuf *sb, const char *name);
237
238/*
239 * Similar for a tag name in refs/tags/.
240 *
241 * The return value is "0" if the result is valid, and "-1" otherwise.
242 */
243int check_tag_ref(struct strbuf *sb, const char *name);
244
245/*
246 * A ref_transaction represents a collection of reference updates that
247 * should succeed or fail together.
248 *
249 * Calling sequence
250 * ----------------
251 *
252 * - Allocate and initialize a `struct ref_transaction` by calling
253 * `ref_transaction_begin()`.
254 *
255 * - Specify the intended ref updates by calling one or more of the
256 * following functions:
257 * - `ref_transaction_update()`
258 * - `ref_transaction_create()`
259 * - `ref_transaction_delete()`
260 * - `ref_transaction_verify()`
261 *
262 * - Then either:
263 *
264 * - Optionally call `ref_transaction_prepare()` to prepare the
265 * transaction. This locks all references, checks preconditions,
266 * etc. but doesn't finalize anything. If this step fails, the
267 * transaction has been closed and can only be freed. If this step
268 * succeeds, then `ref_transaction_commit()` is almost certain to
269 * succeed. However, you can still call `ref_transaction_abort()`
270 * if you decide not to commit the transaction after all.
271 *
272 * - Call `ref_transaction_commit()` to execute the transaction,
273 * make the changes permanent, and release all locks. If you
274 * haven't already called `ref_transaction_prepare()`, then
275 * `ref_transaction_commit()` calls it for you.
276 *
277 * Or
278 *
279 * - Call `ref_transaction_begin()` with REF_TRANSACTION_FLAG_INITIAL if the
280 * ref database is known to be empty and have no other writers (e.g. during
281 * clone). This is likely to be much faster than without the flag.
282 *
283 * - Then finally, call `ref_transaction_free()` to free the
284 * `ref_transaction` data structure.
285 *
286 * At any time before calling `ref_transaction_commit()`, you can call
287 * `ref_transaction_abort()` to abort the transaction, rollback any
288 * locks, and free any associated resources (including the
289 * `ref_transaction` data structure).
290 *
291 * Putting it all together, a complete reference update looks like
292 *
293 * struct ref_transaction *transaction;
294 * struct strbuf err = STRBUF_INIT;
295 * int ret = 0;
296 *
297 * transaction = ref_store_transaction_begin(refs, 0, &err);
298 * if (!transaction ||
299 * ref_transaction_update(...) ||
300 * ref_transaction_create(...) ||
301 * ...etc... ||
302 * ref_transaction_commit(transaction, &err)) {
303 * error("%s", err.buf);
304 * ret = -1;
305 * }
306 * ref_transaction_free(transaction);
307 * strbuf_release(&err);
308 * return ret;
309 *
310 * Error handling
311 * --------------
312 *
313 * On error, transaction functions append a message about what
314 * went wrong to the 'err' argument. The message mentions what
315 * ref was being updated (if any) when the error occurred so it
316 * can be passed to 'die' or 'error' as-is.
317 *
318 * The message is appended to err without first clearing err.
319 * err will not be '\n' terminated.
320 *
321 * Caveats
322 * -------
323 *
324 * Note that no locks are taken, and no refs are read, until
325 * `ref_transaction_prepare()` or `ref_transaction_commit()` is
326 * called. So, for example, `ref_transaction_verify()` won't report a
327 * verification failure until the commit is attempted.
328 */
329struct ref_transaction;
330
331/*
332 * Bit values set in the flags argument passed to each_ref_fn() and
333 * stored in ref_iterator::flags. Other bits are for internal use
334 * only:
335 */
336enum reference_status {
337 /* Reference is a symbolic reference. */
338 REF_ISSYMREF = (1 << 0),
339
340 /* Reference is a packed reference. */
341 REF_ISPACKED = (1 << 1),
342
343 /*
344 * Reference cannot be resolved to an object name: dangling symbolic
345 * reference (directly or indirectly), corrupt reference file,
346 * reference exists but name is bad, or symbolic reference refers to
347 * ill-formatted reference name.
348 */
349 REF_ISBROKEN = (1 << 2),
350
351 /*
352 * Reference name is not well formed.
353 *
354 * See git-check-ref-format(1) for the definition of well formed ref names.
355 */
356 REF_BAD_NAME = (1 << 3),
357};
358
359/* A reference passed to `for_each_ref()`-style callbacks. */
360struct reference {
361 /* The fully-qualified name of the reference. */
362 const char *name;
363
364 /* The target of a symbolic ref. `NULL` for direct references. */
365 const char *target;
366
367 /*
368 * The object ID of a reference. Either the direct object ID or the
369 * resolved object ID in the case of a symbolic ref. May be the zero
370 * object ID in case the symbolic ref cannot be resolved.
371 */
372 const struct object_id *oid;
373
374 /*
375 * An optional peeled object ID. This field _may_ be set for tags in
376 * case the peeled value is present in the backend. Please refer to
377 * `reference_get_peeled_oid()`.
378 */
379 const struct object_id *peeled_oid;
380
381 /* A bitfield of `enum reference_status` flags. */
382 unsigned flags;
383};
384
385/*
386 * Peel the tag to a non-tag commit. If present, this uses the peeled object ID
387 * exposed by the reference backend. Otherwise, the object is peeled via the
388 * object database, which is less efficient.
389 *
390 * Return `0` if the reference could be peeled, a negative error code
391 * otherwise.
392 */
393int reference_get_peeled_oid(struct repository *repo,
394 const struct reference *ref,
395 struct object_id *peeled_oid);
396
397/*
398 * The signature for the callback function for the for_each_*()
399 * functions below. The memory pointed to by the `struct reference`
400 * argument is only guaranteed to be valid for the duration of a
401 * single callback invocation.
402 */
403typedef int each_ref_fn(const struct reference *ref, void *cb_data);
404
405/*
406 * The following functions invoke the specified callback function for
407 * each reference indicated. If the function ever returns a nonzero
408 * value, stop the iteration and return that value. Please note that
409 * it is not safe to modify references while an iteration is in
410 * progress, unless the same callback function invocation that
411 * modifies the reference also returns a nonzero value to immediately
412 * stop the iteration. Returned references are sorted.
413 */
414int refs_head_ref(struct ref_store *refs,
415 each_ref_fn fn, void *cb_data);
416int refs_for_each_ref(struct ref_store *refs,
417 each_ref_fn fn, void *cb_data);
418int refs_for_each_ref_in(struct ref_store *refs, const char *prefix,
419 each_ref_fn fn, void *cb_data);
420int refs_for_each_tag_ref(struct ref_store *refs,
421 each_ref_fn fn, void *cb_data);
422int refs_for_each_branch_ref(struct ref_store *refs,
423 each_ref_fn fn, void *cb_data);
424int refs_for_each_remote_ref(struct ref_store *refs,
425 each_ref_fn fn, void *cb_data);
426int refs_for_each_replace_ref(struct ref_store *refs,
427 each_ref_fn fn, void *cb_data);
428
429/*
430 * references matching any pattern in "exclude_patterns" are omitted from the
431 * result set on a best-effort basis.
432 */
433int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix,
434 const char **exclude_patterns,
435 each_ref_fn fn, void *cb_data);
436
437/**
438 * iterate all refs in "patterns" by partitioning patterns into disjoint sets
439 * and iterating the longest-common prefix of each set.
440 *
441 * references matching any pattern in "exclude_patterns" are omitted from the
442 * result set on a best-effort basis.
443 *
444 * callers should be prepared to ignore references that they did not ask for.
445 */
446int refs_for_each_fullref_in_prefixes(struct ref_store *refs,
447 const char *namespace,
448 const char **patterns,
449 const char **exclude_patterns,
450 each_ref_fn fn, void *cb_data);
451
452/* iterates all refs that match the specified glob pattern. */
453int refs_for_each_glob_ref(struct ref_store *refs, each_ref_fn fn,
454 const char *pattern, void *cb_data);
455
456int refs_for_each_glob_ref_in(struct ref_store *refs, each_ref_fn fn,
457 const char *pattern, const char *prefix, void *cb_data);
458
459int refs_head_ref_namespaced(struct ref_store *refs, each_ref_fn fn, void *cb_data);
460
461/*
462 * references matching any pattern in "exclude_patterns" are omitted from the
463 * result set on a best-effort basis.
464 */
465int refs_for_each_namespaced_ref(struct ref_store *refs,
466 const char **exclude_patterns,
467 each_ref_fn fn, void *cb_data);
468
469/* can be used to learn about broken ref and symref */
470int refs_for_each_rawref(struct ref_store *refs, each_ref_fn fn, void *cb_data);
471int refs_for_each_rawref_in(struct ref_store *refs, const char *prefix,
472 each_ref_fn fn, void *cb_data);
473
474/*
475 * Iterates over all refs including root refs, i.e. pseudorefs and HEAD.
476 */
477int refs_for_each_include_root_refs(struct ref_store *refs, each_ref_fn fn,
478 void *cb_data);
479
480/*
481 * Normalizes partial refs to their fully qualified form.
482 * Will prepend <prefix> to the <pattern> if it doesn't start with 'refs/'.
483 * <prefix> will default to 'refs/' if NULL.
484 *
485 * item.string will be set to the result.
486 * item.util will be set to NULL if <pattern> contains glob characters, or
487 * non-NULL if it doesn't.
488 */
489void normalize_glob_ref(struct string_list_item *item, const char *prefix,
490 const char *pattern);
491
492static inline const char *has_glob_specials(const char *pattern)
493{
494 return strpbrk(pattern, "?*[");
495}
496
497void refs_warn_dangling_symrefs(struct ref_store *refs, FILE *fp,
498 const char *indent, int dry_run,
499 const struct string_list *refnames);
500
501/*
502 * Flags for controlling behaviour of refs_optimize()
503 * REFS_OPTIMIZE_PRUNE: Prune loose refs after packing
504 * REFS_OPTIMIZE_AUTO: Pack refs on a best effort basis. The heuristics and end
505 * result are decided by the ref backend. Backends may ignore
506 * this flag and fall back to a normal repack.
507 */
508#define REFS_OPTIMIZE_PRUNE (1 << 0)
509#define REFS_OPTIMIZE_AUTO (1 << 1)
510
511struct refs_optimize_opts {
512 unsigned int flags;
513 struct ref_exclusions *exclusions;
514 struct string_list *includes;
515};
516
517/*
518 * Optimize the ref store. The exact behavior is up to the backend.
519 * For the files backend, this is equivalent to packing refs.
520 */
521int refs_optimize(struct ref_store *refs, struct refs_optimize_opts *opts);
522
523/*
524 * Check if refs backend can be optimized by calling 'refs_optimize'.
525 */
526int refs_optimize_required(struct ref_store *ref_store,
527 struct refs_optimize_opts *opts,
528 bool *required);
529
530/*
531 * Setup reflog before using. Fill in err and return -1 on failure.
532 */
533int refs_create_reflog(struct ref_store *refs, const char *refname,
534 struct strbuf *err);
535
536/**
537 * Reads log for the value of ref during at_time (in which case "cnt" should be
538 * negative) or the reflog "cnt" entries from the top (in which case "at_time"
539 * should be 0).
540 *
541 * If we found the reflog entry in question, returns 0 (and details of the
542 * entry can be found in the out-parameters).
543 *
544 * If we ran out of reflog entries, the out-parameters are filled with the
545 * details of the oldest entry we did find, and the function returns 1. Note
546 * that there is one important special case here! If the reflog was empty
547 * and the caller asked for the 0-th cnt, we will return "1" but leave the
548 * "oid" field untouched.
549 **/
550int read_ref_at(struct ref_store *refs,
551 const char *refname, unsigned int flags,
552 timestamp_t at_time, int cnt,
553 struct object_id *oid, char **msg,
554 timestamp_t *cutoff_time, int *cutoff_tz, int *cutoff_cnt);
555
556/** Check if a particular reflog exists */
557int refs_reflog_exists(struct ref_store *refs, const char *refname);
558
559/*
560 * Delete the specified reference. If old_oid is non-NULL, then
561 * verify that the current value of the reference is old_oid before
562 * deleting it. If old_oid is NULL, delete the reference if it
563 * exists, regardless of its old value. It is an error for old_oid to
564 * be null_oid. msg and flags are passed through to
565 * ref_transaction_delete().
566 */
567int refs_delete_ref(struct ref_store *refs, const char *msg,
568 const char *refname,
569 const struct object_id *old_oid,
570 unsigned int flags);
571
572/*
573 * Delete the specified references. If there are any problems, emit
574 * errors but attempt to keep going (i.e., the deletes are not done in
575 * an all-or-nothing transaction). msg and flags are passed through to
576 * ref_transaction_delete().
577 */
578int refs_delete_refs(struct ref_store *refs, const char *msg,
579 struct string_list *refnames, unsigned int flags);
580
581/** Delete a reflog */
582int refs_delete_reflog(struct ref_store *refs, const char *refname);
583
584/*
585 * Callback to process a reflog entry found by the iteration functions (see
586 * below).
587 *
588 * The committer parameter is a single string, in the form
589 * "$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" (without double quotes).
590 *
591 * The timestamp parameter gives the time when entry was created as the number
592 * of seconds since the UNIX epoch.
593 *
594 * The tz parameter gives the timezone offset for the user who created
595 * the reflog entry, and its value gives a positive or negative offset
596 * from UTC. Its absolute value is formed by multiplying the hour
597 * part by 100 and adding the minute part. For example, 1 hour ahead
598 * of UTC, CET == "+0100", is represented as positive one hundred (not
599 * positive sixty).
600 *
601 * The msg parameter is a single complete line; a reflog message given
602 * to refs_delete_ref, refs_update_ref, etc. is returned to the
603 * callback normalized---each run of whitespaces are squashed into a
604 * single whitespace, trailing whitespace, if exists, is trimmed, and
605 * then a single LF is added at the end.
606 *
607 * The cb_data is a caller-supplied pointer given to the iterator
608 * functions.
609 */
610typedef int each_reflog_ent_fn(const char *refname,
611 struct object_id *old_oid,
612 struct object_id *new_oid,
613 const char *committer,
614 timestamp_t timestamp,
615 int tz, const char *msg,
616 void *cb_data);
617
618/* Iterate over reflog entries in the log for `refname`. */
619
620/* oldest entry first */
621int refs_for_each_reflog_ent(struct ref_store *refs, const char *refname,
622 each_reflog_ent_fn fn, void *cb_data);
623
624/* youngest entry first */
625int refs_for_each_reflog_ent_reverse(struct ref_store *refs,
626 const char *refname,
627 each_reflog_ent_fn fn,
628 void *cb_data);
629
630/*
631 * The signature for the callback function for the refs_for_each_reflog()
632 * functions below. The memory pointed to by the refname argument is only
633 * guaranteed to be valid for the duration of a single callback invocation.
634 */
635typedef int each_reflog_fn(const char *refname, void *cb_data);
636
637/*
638 * Calls the specified function for each reflog file until it returns nonzero,
639 * and returns the value. Reflog file order is unspecified.
640 */
641int refs_for_each_reflog(struct ref_store *refs, each_reflog_fn fn, void *cb_data);
642
643#define REFNAME_ALLOW_ONELEVEL 1
644#define REFNAME_REFSPEC_PATTERN 2
645
646/*
647 * Return 0 iff refname has the correct format for a refname according
648 * to the rules described in Documentation/git-check-ref-format.adoc.
649 * If REFNAME_ALLOW_ONELEVEL is set in flags, then accept one-level
650 * reference names. If REFNAME_REFSPEC_PATTERN is set in flags, then
651 * allow a single "*" wildcard character in the refspec. No leading or
652 * repeated slashes are accepted.
653 */
654int check_refname_format(const char *refname, int flags);
655
656/*
657 * Check the reference database for consistency. Return 0 if refs and
658 * reflogs are consistent, and non-zero otherwise. The errors will be
659 * written to stderr.
660 */
661int refs_fsck(struct ref_store *refs, struct fsck_options *o,
662 struct worktree *wt);
663
664/*
665 * Apply the rules from check_refname_format, but mutate the result until it
666 * is acceptable, and place the result in "out".
667 */
668void sanitize_refname_component(const char *refname, struct strbuf *out);
669
670const char *prettify_refname(const char *refname);
671
672char *refs_shorten_unambiguous_ref(struct ref_store *refs,
673 const char *refname, int strict);
674
675/** rename ref, return 0 on success **/
676int refs_rename_ref(struct ref_store *refs, const char *oldref,
677 const char *newref, const char *logmsg);
678
679/** copy ref, return 0 on success **/
680int refs_copy_existing_ref(struct ref_store *refs, const char *oldref,
681 const char *newref, const char *logmsg);
682
683int refs_update_symref(struct ref_store *refs, const char *refname,
684 const char *target, const char *logmsg);
685
686int refs_update_symref_extended(struct ref_store *refs, const char *refname,
687 const char *target, const char *logmsg,
688 struct strbuf *referent, int create_only);
689
690enum action_on_err {
691 UPDATE_REFS_MSG_ON_ERR,
692 UPDATE_REFS_DIE_ON_ERR,
693 UPDATE_REFS_QUIET_ON_ERR
694};
695
696enum ref_transaction_flag {
697 /*
698 * The ref transaction is part of the initial creation of the ref store
699 * and can thus assume that the ref store is completely empty. This
700 * allows the backend to perform the transaction more efficiently by
701 * skipping certain checks.
702 *
703 * It is a bug to set this flag when there might be other processes
704 * accessing the repository or if there are existing references that
705 * might conflict with the ones being created. All old_oid values must
706 * either be absent or null_oid.
707 */
708 REF_TRANSACTION_FLAG_INITIAL = (1 << 0),
709
710 /*
711 * The transaction mechanism by default fails all updates if any conflict
712 * is detected. This flag allows transactions to partially apply updates
713 * while rejecting updates which do not match the expected state.
714 */
715 REF_TRANSACTION_ALLOW_FAILURE = (1 << 1),
716};
717
718/*
719 * Begin a reference transaction. The reference transaction must
720 * be freed by calling ref_transaction_free().
721 */
722struct ref_transaction *ref_store_transaction_begin(struct ref_store *refs,
723 unsigned int flags,
724 struct strbuf *err);
725
726/*
727 * Reference transaction updates
728 *
729 * The following four functions add a reference check or update to a
730 * ref_transaction. They have some common similar parameters:
731 *
732 * transaction -- a pointer to an open ref_transaction, obtained
733 * from ref_transaction_begin().
734 *
735 * refname -- the name of the reference to be affected.
736 *
737 * new_oid -- the object ID that should be set to be the new value
738 * of the reference. Some functions allow this parameter to be
739 * NULL, meaning that the reference is not changed, or
740 * null_oid, meaning that the reference should be deleted. A
741 * copy of this value is made in the transaction.
742 *
743 * old_oid -- the object ID that the reference must have before
744 * the update. Some functions allow this parameter to be NULL,
745 * meaning that the old value of the reference is not checked,
746 * or null_oid, meaning that the reference must not exist
747 * before the update. A copy of this value is made in the
748 * transaction.
749 *
750 * new_target -- the target reference that the reference will be
751 * updated to point to. If the reference is a regular reference,
752 * it will be converted to a symbolic reference. Cannot be set
753 * together with `new_oid`. A copy of this value is made in the
754 * transaction.
755 *
756 * old_target -- the reference that the reference must be pointing to.
757 * Canont be set together with `old_oid`. A copy of this value is
758 * made in the transaction.
759 *
760 * flags -- flags affecting the update, passed to
761 * update_ref_lock(). Possible flags: REF_NO_DEREF,
762 * REF_FORCE_CREATE_REFLOG. See those constants for more
763 * information.
764 *
765 * msg -- a message describing the change (for the reflog).
766 *
767 * err -- a strbuf for receiving a description of any error that
768 * might have occurred.
769 *
770 * The functions make internal copies of refname and msg, so the
771 * caller retains ownership of these parameters.
772 *
773 * The functions return 0 on success and non-zero on failure. A
774 * failure means that the transaction as a whole has failed and needs
775 * to be rolled back.
776 */
777
778/*
779 * The following flags can be passed to ref_transaction_update() etc.
780 * Internally, they are stored in `ref_update::flags`, along with some
781 * internal flags.
782 */
783
784/*
785 * Act on the ref directly; i.e., without dereferencing symbolic refs.
786 * If this flag is not specified, then symbolic references are
787 * dereferenced and the update is applied to the referent.
788 */
789#define REF_NO_DEREF (1 << 0)
790
791/*
792 * Force the creation of a reflog for this reference, even if it
793 * didn't previously have a reflog.
794 */
795#define REF_FORCE_CREATE_REFLOG (1 << 1)
796
797/*
798 * Blindly write an object_id. This is useful for testing data corruption
799 * scenarios.
800 */
801#define REF_SKIP_OID_VERIFICATION (1 << 10)
802
803/*
804 * Skip verifying refname. This is useful for testing data corruption scenarios.
805 */
806#define REF_SKIP_REFNAME_VERIFICATION (1 << 11)
807
808/*
809 * Skip creation of a reflog entry, even if it would have otherwise been
810 * created.
811 */
812#define REF_SKIP_CREATE_REFLOG (1 << 12)
813
814/*
815 * When writing a REF_LOG_ONLY record, use the old and new object IDs provided
816 * in the update instead of resolving the old object ID. The caller must also
817 * set both REF_HAVE_OLD and REF_HAVE_NEW.
818 */
819#define REF_LOG_USE_PROVIDED_OIDS (1 << 13)
820
821/*
822 * Bitmask of all of the flags that are allowed to be passed in to
823 * ref_transaction_update() and friends:
824 */
825#define REF_TRANSACTION_UPDATE_ALLOWED_FLAGS \
826 (REF_NO_DEREF | REF_FORCE_CREATE_REFLOG | REF_SKIP_OID_VERIFICATION | \
827 REF_SKIP_REFNAME_VERIFICATION | REF_SKIP_CREATE_REFLOG | REF_LOG_USE_PROVIDED_OIDS)
828
829/*
830 * Add a reference update to transaction. `new_oid` is the value that
831 * the reference should have after the update, or `null_oid` if it
832 * should be deleted. If `new_oid` is NULL, then the reference is not
833 * changed at all. `old_oid` is the value that the reference must have
834 * before the update, or `null_oid` if it must not have existed
835 * beforehand. The old value is checked after the lock is taken to
836 * prevent races. If the old value doesn't agree with old_oid, the
837 * whole transaction fails. If old_oid is NULL, then the previous
838 * value is not checked. If `old_target` is not NULL, treat the reference
839 * as a symbolic ref and validate that its target before the update is
840 * `old_target`. If the `new_target` is not NULL, then the reference
841 * will be updated to a symbolic ref which targets `new_target`.
842 * Together, these allow us to update between regular refs and symrefs.
843 *
844 * See the above comment "Reference transaction updates" for more
845 * information.
846 */
847int ref_transaction_update(struct ref_transaction *transaction,
848 const char *refname,
849 const struct object_id *new_oid,
850 const struct object_id *old_oid,
851 const char *new_target,
852 const char *old_target,
853 unsigned int flags, const char *msg,
854 struct strbuf *err);
855
856/*
857 * Similar to `ref_transaction_update`, but this function is only for adding
858 * a reflog update. Supports providing custom committer information. The index
859 * field can be utiltized to order updates as desired. When set to zero, the
860 * updates default to being ordered by refname.
861 */
862int ref_transaction_update_reflog(struct ref_transaction *transaction,
863 const char *refname,
864 const struct object_id *new_oid,
865 const struct object_id *old_oid,
866 const char *committer_info,
867 const char *msg,
868 uint64_t index,
869 struct strbuf *err);
870
871/*
872 * Add a reference creation to transaction. new_oid is the value that
873 * the reference should have after the update; it must not be
874 * null_oid. It is verified that the reference does not exist
875 * already.
876 *
877 * See the above comment "Reference transaction updates" for more
878 * information.
879 */
880int ref_transaction_create(struct ref_transaction *transaction,
881 const char *refname,
882 const struct object_id *new_oid,
883 const char *new_target,
884 unsigned int flags, const char *msg,
885 struct strbuf *err);
886
887/*
888 * Add a reference deletion to transaction. If old_oid is non-NULL,
889 * then it holds the value that the reference should have had before
890 * the update (which must not be null_oid).
891 *
892 * See the above comment "Reference transaction updates" for more
893 * information.
894 */
895int ref_transaction_delete(struct ref_transaction *transaction,
896 const char *refname,
897 const struct object_id *old_oid,
898 const char *old_target,
899 unsigned int flags,
900 const char *msg,
901 struct strbuf *err);
902
903/*
904 * Verify, within a transaction, that refname has the value old_oid,
905 * or, if old_oid is null_oid, then verify that the reference
906 * doesn't exist. old_oid must be non-NULL.
907 *
908 * See the above comment "Reference transaction updates" for more
909 * information.
910 */
911int ref_transaction_verify(struct ref_transaction *transaction,
912 const char *refname,
913 const struct object_id *old_oid,
914 const char *old_target,
915 unsigned int flags,
916 struct strbuf *err);
917
918/*
919 * Perform the preparatory stages of committing `transaction`. Acquire
920 * any needed locks, check preconditions, etc.; basically, do as much
921 * as possible to ensure that the transaction will be able to go
922 * through, stopping just short of making any irrevocable or
923 * user-visible changes. The updates that this function prepares can
924 * be finished up by calling `ref_transaction_commit()` or rolled back
925 * by calling `ref_transaction_abort()`.
926 *
927 * On success, return 0 and leave the transaction in "prepared" state.
928 * On failure, abort the transaction, write an error message to `err`,
929 * and return one of the `TRANSACTION_*` constants.
930 *
931 * Callers who don't need such fine-grained control over committing
932 * reference transactions should just call `ref_transaction_commit()`.
933 */
934int ref_transaction_prepare(struct ref_transaction *transaction,
935 struct strbuf *err);
936
937/*
938 * Commit all of the changes that have been queued in transaction, as
939 * atomically as possible. On success, return 0 and leave the
940 * transaction in "closed" state. On failure, roll back the
941 * transaction, write an error message to `err`, and return one of the
942 * `TRANSACTION_*` constants
943 */
944int ref_transaction_commit(struct ref_transaction *transaction,
945 struct strbuf *err);
946
947/*
948 * Abort `transaction`, which has been begun and possibly prepared,
949 * but not yet committed.
950 */
951int ref_transaction_abort(struct ref_transaction *transaction,
952 struct strbuf *err);
953
954/*
955 * Execute the given callback function for each of the reference updates which
956 * have been queued in the given transaction. `old_oid` and `new_oid` may be
957 * `NULL` pointers depending on whether the update has these object IDs set or
958 * not.
959 */
960typedef void ref_transaction_for_each_queued_update_fn(const char *refname,
961 const struct object_id *old_oid,
962 const struct object_id *new_oid,
963 void *cb_data);
964void ref_transaction_for_each_queued_update(struct ref_transaction *transaction,
965 ref_transaction_for_each_queued_update_fn cb,
966 void *cb_data);
967
968/*
969 * Execute the given callback function for each of the reference updates which
970 * have been rejected in the given transaction.
971 */
972typedef void ref_transaction_for_each_rejected_update_fn(const char *refname,
973 const struct object_id *old_oid,
974 const struct object_id *new_oid,
975 const char *old_target,
976 const char *new_target,
977 enum ref_transaction_error err,
978 void *cb_data);
979void ref_transaction_for_each_rejected_update(struct ref_transaction *transaction,
980 ref_transaction_for_each_rejected_update_fn cb,
981 void *cb_data);
982
983/*
984 * Translate errors to human readable error messages.
985 */
986const char *ref_transaction_error_msg(enum ref_transaction_error err);
987
988/*
989 * Free `*transaction` and all associated data.
990 */
991void ref_transaction_free(struct ref_transaction *transaction);
992
993/**
994 * Lock, update, and unlock a single reference. This function
995 * basically does a transaction containing a single call to
996 * ref_transaction_update(). The parameters to this function have the
997 * same meaning as the corresponding parameters to
998 * ref_transaction_update(). Handle errors as requested by the `onerr`
999 * argument.
1000 */
1001int refs_update_ref(struct ref_store *refs, const char *msg, const char *refname,
1002 const struct object_id *new_oid, const struct object_id *old_oid,
1003 unsigned int flags, enum action_on_err onerr);
1004
1005int parse_hide_refs_config(const char *var, const char *value, const char *,
1006 struct strvec *);
1007
1008/*
1009 * Check whether a ref is hidden. If no namespace is set, both the first and
1010 * the second parameter point to the full ref name. If a namespace is set and
1011 * the ref is inside that namespace, the first parameter is a pointer to the
1012 * name of the ref with the namespace prefix removed. If a namespace is set and
1013 * the ref is outside that namespace, the first parameter is NULL. The second
1014 * parameter always points to the full ref name.
1015 */
1016int ref_is_hidden(const char *, const char *, const struct strvec *);
1017
1018/*
1019 * Returns an array of patterns to use as excluded_patterns, if none of the
1020 * hidden references use the token '!' or '^'.
1021 */
1022const char **hidden_refs_to_excludes(const struct strvec *hide_refs);
1023
1024/*
1025 * Prefix all exclude patterns with the namespace, if any. This is required
1026 * because exclude patterns apply to the stripped reference name, not the full
1027 * reference name with the namespace.
1028 */
1029const char **get_namespaced_exclude_patterns(const char **exclude_patterns,
1030 const char *namespace,
1031 struct strvec *out);
1032
1033/* Is this a per-worktree ref living in the refs/ namespace? */
1034int is_per_worktree_ref(const char *refname);
1035
1036/* Describes how a refname relates to worktrees */
1037enum ref_worktree_type {
1038 REF_WORKTREE_CURRENT, /* implicitly per worktree, eg. HEAD or
1039 refs/bisect/SOMETHING */
1040 REF_WORKTREE_MAIN, /* explicitly in main worktree, eg.
1041 main-worktree/HEAD */
1042 REF_WORKTREE_OTHER, /* explicitly in named worktree, eg.
1043 worktrees/bla/HEAD */
1044 REF_WORKTREE_SHARED, /* the default, eg. refs/heads/main */
1045};
1046
1047/*
1048 * Parse a `maybe_worktree_ref` as a ref that possibly refers to a worktree ref
1049 * (ie. either REFNAME, main-worktree/REFNAME or worktree/WORKTREE/REFNAME). It
1050 * returns what kind of ref was found, and in case of REF_WORKTREE_OTHER, the
1051 * worktree name is returned in `worktree_name` (pointing into
1052 * `maybe_worktree_ref`) and `worktree_name_length`. The bare refname (the
1053 * refname stripped of prefixes) is returned in `bare_refname`. The
1054 * `worktree_name`, `worktree_name_length` and `bare_refname` arguments may be
1055 * NULL.
1056 */
1057enum ref_worktree_type parse_worktree_ref(const char *maybe_worktree_ref,
1058 const char **worktree_name,
1059 int *worktree_name_length,
1060 const char **bare_refname);
1061
1062enum expire_reflog_flags {
1063 EXPIRE_REFLOGS_DRY_RUN = 1 << 0,
1064 EXPIRE_REFLOGS_UPDATE_REF = 1 << 1,
1065 EXPIRE_REFLOGS_REWRITE = 1 << 2,
1066};
1067
1068/*
1069 * The following interface is used for reflog expiration. The caller
1070 * calls refs_reflog_expire(), supplying it with three callback functions,
1071 * of the following types. The callback functions define the
1072 * expiration policy that is desired.
1073 *
1074 * reflog_expiry_prepare_fn -- Called once after the reference is
1075 * locked. Called with the OID of the locked reference.
1076 *
1077 * reflog_expiry_should_prune_fn -- Called once for each entry in the
1078 * existing reflog. It should return true iff that entry should be
1079 * pruned.
1080 *
1081 * reflog_expiry_cleanup_fn -- Called once before the reference is
1082 * unlocked again.
1083 */
1084typedef void reflog_expiry_prepare_fn(const char *refname,
1085 const struct object_id *oid,
1086 void *cb_data);
1087typedef int reflog_expiry_should_prune_fn(struct object_id *ooid,
1088 struct object_id *noid,
1089 const char *email,
1090 timestamp_t timestamp, int tz,
1091 const char *message, void *cb_data);
1092typedef void reflog_expiry_cleanup_fn(void *cb_data);
1093
1094/*
1095 * Expire reflog entries for the specified reference.
1096 * flags is a combination of the constants in
1097 * enum expire_reflog_flags. The three function pointers are described
1098 * above. On success, return zero.
1099 */
1100int refs_reflog_expire(struct ref_store *refs,
1101 const char *refname,
1102 unsigned int flags,
1103 reflog_expiry_prepare_fn prepare_fn,
1104 reflog_expiry_should_prune_fn should_prune_fn,
1105 reflog_expiry_cleanup_fn cleanup_fn,
1106 void *policy_cb_data);
1107
1108struct ref_store *get_main_ref_store(struct repository *r);
1109
1110/**
1111 * Submodules
1112 * ----------
1113 *
1114 * If you want to iterate the refs of a submodule you first need to add the
1115 * submodules object database. You can do this by a code-snippet like
1116 * this:
1117 *
1118 * const char *path = "path/to/submodule"
1119 * if (add_submodule_odb(path))
1120 * die("Error submodule '%s' not populated.", path);
1121 *
1122 * `add_submodule_odb()` will return zero on success. If you
1123 * do not do this you will get an error for each ref that it does not point
1124 * to a valid object.
1125 *
1126 * Note: As a side-effect of this you cannot safely assume that all
1127 * objects you lookup are available in superproject. All submodule objects
1128 * will be available the same way as the superprojects objects.
1129 *
1130 * Example:
1131 * --------
1132 *
1133 * ----
1134 * static int handle_remote_ref(const char *refname,
1135 * const unsigned char *sha1, int flags, void *cb_data)
1136 * {
1137 * struct strbuf *output = cb_data;
1138 * strbuf_addf(output, "%s\n", refname);
1139 * return 0;
1140 * }
1141 *
1142 */
1143
1144/*
1145 * Return the ref_store instance for the specified submodule. For the
1146 * main repository, use submodule==NULL; such a call cannot fail. For
1147 * a submodule, the submodule must exist and be a nonbare repository,
1148 * otherwise return NULL. If the requested reference store has not yet
1149 * been initialized, initialize it first.
1150 *
1151 * For backwards compatibility, submodule=="" is treated the same as
1152 * submodule==NULL.
1153 */
1154struct ref_store *repo_get_submodule_ref_store(struct repository *repo,
1155 const char *submodule);
1156struct ref_store *get_worktree_ref_store(const struct worktree *wt);
1157
1158/*
1159 * Some of the names specified by refs have special meaning to Git.
1160 * Organize these namespaces in a common 'ref_namespace' array for
1161 * reference from multiple places in the codebase.
1162 */
1163
1164struct ref_namespace_info {
1165 const char *ref;
1166 enum decoration_type decoration;
1167
1168 /*
1169 * If 'exact' is true, then we must match the 'ref' exactly.
1170 * Otherwise, use a prefix match.
1171 *
1172 * 'ref_updated' is for internal use. It represents whether the
1173 * 'ref' value was replaced from its original literal version.
1174 */
1175 unsigned exact:1,
1176 ref_updated:1;
1177};
1178
1179enum ref_namespace {
1180 NAMESPACE_HEAD,
1181 NAMESPACE_BRANCHES,
1182 NAMESPACE_TAGS,
1183 NAMESPACE_REMOTE_REFS,
1184 NAMESPACE_STASH,
1185 NAMESPACE_REPLACE,
1186 NAMESPACE_NOTES,
1187 NAMESPACE_PREFETCH,
1188 NAMESPACE_REWRITTEN,
1189
1190 /* Must be last */
1191 NAMESPACE__COUNT
1192};
1193
1194/* See refs.c for the contents of this array. */
1195extern struct ref_namespace_info ref_namespace[NAMESPACE__COUNT];
1196
1197/*
1198 * Some ref namespaces can be modified by config values or environment
1199 * variables. Modify a namespace as specified by its ref_namespace key.
1200 */
1201void update_ref_namespace(enum ref_namespace namespace, char *ref);
1202
1203/*
1204 * Check whether the provided name names a root reference. This function only
1205 * performs a syntactic check.
1206 *
1207 * A root ref is a reference that lives in the root of the reference hierarchy.
1208 * These references must conform to special syntax:
1209 *
1210 * - Their name must be all-uppercase or underscores ("_").
1211 *
1212 * - Their name must end with "_HEAD". As a special rule, "HEAD" is a root
1213 * ref, as well.
1214 *
1215 * - Their name may not contain a slash.
1216 *
1217 * There is a special set of irregular root refs that exist due to historic
1218 * reasons, only. This list shall not be expanded in the future:
1219 *
1220 * - AUTO_MERGE
1221 *
1222 * - BISECT_EXPECTED_REV
1223 *
1224 * - NOTES_MERGE_PARTIAL
1225 *
1226 * - NOTES_MERGE_REF
1227 *
1228 * - MERGE_AUTOSTASH
1229 */
1230int is_root_ref(const char *refname);
1231
1232/*
1233 * Pseudorefs are refs that have different semantics compared to
1234 * "normal" refs. These refs can thus not be stored in the ref backend,
1235 * but must always be accessed via the filesystem. The following refs
1236 * are pseudorefs:
1237 *
1238 * - FETCH_HEAD may contain multiple object IDs, and each one of them
1239 * carries additional metadata like where it came from.
1240 *
1241 * - MERGE_HEAD may contain multiple object IDs when merging multiple
1242 * heads.
1243 *
1244 * Reading, writing or deleting references must consistently go either
1245 * through the filesystem (pseudorefs) or through the reference
1246 * backend (normal ones).
1247 */
1248int is_pseudo_ref(const char *refname);
1249
1250/*
1251 * The following flags can be passed to `repo_migrate_ref_storage_format()`:
1252 *
1253 * - REPO_MIGRATE_REF_STORAGE_FORMAT_DRYRUN: perform a dry-run migration
1254 * without touching the main repository. The result will be written into a
1255 * temporary ref storage directory.
1256 *
1257 * - REPO_MIGRATE_REF_STORAGE_FORMAT_SKIP_REFLOG: skip migration of reflogs.
1258 */
1259#define REPO_MIGRATE_REF_STORAGE_FORMAT_DRYRUN (1 << 0)
1260#define REPO_MIGRATE_REF_STORAGE_FORMAT_SKIP_REFLOG (1 << 1)
1261
1262/*
1263 * Migrate the ref storage format used by the repository to the
1264 * specified one.
1265 */
1266int repo_migrate_ref_storage_format(struct repository *repo,
1267 enum ref_storage_format format,
1268 unsigned int flags,
1269 struct strbuf *err);
1270
1271/*
1272 * Reference iterators
1273 *
1274 * A reference iterator encapsulates the state of an in-progress
1275 * iteration over references. Create an instance of `struct
1276 * ref_iterator` via one of the functions in this module.
1277 *
1278 * A freshly-created ref_iterator doesn't yet point at a reference. To
1279 * advance the iterator, call ref_iterator_advance(). If successful,
1280 * this sets the iterator's refname, oid, and flags fields to describe
1281 * the next reference and returns ITER_OK. The data pointed at by
1282 * refname and oid belong to the iterator; if you want to retain them
1283 * after calling ref_iterator_advance() again or calling
1284 * ref_iterator_free(), you must make a copy. When the iteration has
1285 * been exhausted, ref_iterator_advance() releases any resources
1286 * associated with the iteration, frees the ref_iterator object, and
1287 * returns ITER_DONE. If you want to abort the iteration early, call
1288 * ref_iterator_free(), which also frees the ref_iterator object and
1289 * any associated resources. If there was an internal error advancing
1290 * to the next entry, ref_iterator_advance() aborts the iteration,
1291 * frees the ref_iterator, and returns ITER_ERROR.
1292 *
1293 * Putting it all together, a typical iteration looks like this:
1294 *
1295 * int ok;
1296 * struct ref_iterator *iter = ...;
1297 *
1298 * while ((ok = ref_iterator_advance(iter)) == ITER_OK) {
1299 * if (want_to_stop_iteration()) {
1300 * ok = ITER_DONE;
1301 * break;
1302 * }
1303 *
1304 * // Access information about the current reference:
1305 * if (!(iter->flags & REF_ISSYMREF))
1306 * printf("%s is %s\n", iter->refname, oid_to_hex(iter->oid));
1307 * }
1308 *
1309 * if (ok != ITER_DONE)
1310 * handle_error();
1311 * ref_iterator_free(iter);
1312 */
1313struct ref_iterator;
1314
1315/*
1316 * These flags are passed to refs_ref_iterator_begin() (and do_for_each_ref(),
1317 * which feeds it).
1318 */
1319enum do_for_each_ref_flags {
1320 /*
1321 * Include broken references in a do_for_each_ref*() iteration, which
1322 * would normally be omitted. This includes both refs that point to
1323 * missing objects (a true repository corruption), ones with illegal
1324 * names (which we prefer not to expose to callers), as well as
1325 * dangling symbolic refs (i.e., those that point to a non-existent
1326 * ref; this is not a corruption, but as they have no valid oid, we
1327 * omit them from normal iteration results).
1328 */
1329 DO_FOR_EACH_INCLUDE_BROKEN = (1 << 0),
1330
1331 /*
1332 * Only include per-worktree refs in a do_for_each_ref*() iteration.
1333 * Normally this will be used with a files ref_store, since that's
1334 * where all reference backends will presumably store their
1335 * per-worktree refs.
1336 */
1337 DO_FOR_EACH_PER_WORKTREE_ONLY = (1 << 1),
1338
1339 /*
1340 * Omit dangling symrefs from output; this only has an effect with
1341 * INCLUDE_BROKEN, since they are otherwise not included at all.
1342 */
1343 DO_FOR_EACH_OMIT_DANGLING_SYMREFS = (1 << 2),
1344
1345 /*
1346 * Include root refs i.e. HEAD and pseudorefs along with the regular
1347 * refs.
1348 */
1349 DO_FOR_EACH_INCLUDE_ROOT_REFS = (1 << 3),
1350};
1351
1352/*
1353 * Return an iterator that goes over each reference in `refs` for
1354 * which the refname begins with prefix. If trim is non-zero, then
1355 * trim that many characters off the beginning of each refname.
1356 * The output is ordered by refname.
1357 */
1358struct ref_iterator *refs_ref_iterator_begin(
1359 struct ref_store *refs,
1360 const char *prefix, const char **exclude_patterns,
1361 int trim, enum do_for_each_ref_flags flags);
1362
1363/*
1364 * Advance the iterator to the first or next item and return ITER_OK.
1365 * If the iteration is exhausted, free the resources associated with
1366 * the ref_iterator and return ITER_DONE. On errors, free the iterator
1367 * resources and return ITER_ERROR. It is a bug to use ref_iterator or
1368 * call this function again after it has returned ITER_DONE or
1369 * ITER_ERROR.
1370 */
1371int ref_iterator_advance(struct ref_iterator *ref_iterator);
1372
1373enum ref_iterator_seek_flag {
1374 /*
1375 * When the REF_ITERATOR_SEEK_SET_PREFIX flag is set, the iterator's prefix is
1376 * updated to match the provided string, affecting all subsequent iterations. If
1377 * not, the iterator seeks to the specified reference and clears any previously
1378 * set prefix.
1379 */
1380 REF_ITERATOR_SEEK_SET_PREFIX = (1 << 0),
1381};
1382
1383/*
1384 * Seek the iterator to the first reference matching the given seek string.
1385 * The seek string is matched as a literal string, without regard for path
1386 * separators. If seek is NULL or the empty string, seek the iterator to the
1387 * first reference again.
1388 *
1389 * This function is expected to behave as if a new ref iterator has been
1390 * created, but allows reuse of existing iterators for optimization.
1391 *
1392 * Returns 0 on success, a negative error code otherwise.
1393 */
1394int ref_iterator_seek(struct ref_iterator *ref_iterator, const char *refname,
1395 unsigned int flags);
1396
1397/* Free the reference iterator and any associated resources. */
1398void ref_iterator_free(struct ref_iterator *ref_iterator);
1399
1400/*
1401 * The common backend for the for_each_*ref* functions. Call fn for
1402 * each reference in iter. If the iterator itself ever returns
1403 * ITER_ERROR, return -1. If fn ever returns a non-zero value, stop
1404 * the iteration and return that value. Otherwise, return 0. In any
1405 * case, free the iterator when done. This function is basically an
1406 * adapter between the callback style of reference iteration and the
1407 * iterator style.
1408 */
1409int do_for_each_ref_iterator(struct ref_iterator *iter,
1410 each_ref_fn fn, void *cb_data);
1411
1412#endif /* REFS_H */