5 #include "repository.h"
6 #include "repo-settings.h"
13 struct string_list_item
;
16 enum ref_storage_format
ref_storage_format_by_name(const char *name
);
17 const char *ref_storage_format_to_name(enum ref_storage_format ref_storage_format
);
19 enum 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,
39 * Resolve a reference, recursively following symbolic references.
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.
45 * If oid is non-NULL, store the referred-to object's name in it.
47 * If the reference cannot be resolved to an object, the behavior
48 * depends on the RESOLVE_REF_READING flag:
50 * - If RESOLVE_REF_READING is set, return NULL.
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.
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.
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
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.
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.
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.
86 #define RESOLVE_REF_READING 0x01
87 #define RESOLVE_REF_NO_RECURSE 0x02
88 #define RESOLVE_REF_ALLOW_BAD_NAME 0x04
90 const char *refs_resolve_ref_unsafe(struct ref_store
*refs
,
93 struct object_id
*oid
,
96 char *refs_resolve_refdup(struct ref_store
*refs
,
97 const char *refname
, int resolve_flags
,
98 struct object_id
*oid
, int *flags
);
100 int refs_read_ref_full(struct ref_store
*refs
, const char *refname
,
101 int resolve_flags
, struct object_id
*oid
, int *flags
);
103 int refs_read_ref(struct ref_store
*refs
, const char *refname
, struct object_id
*oid
);
105 #define NOT_A_SYMREF -2
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.
113 * Returns 0 on success, -2 if the "refname" is not a symbolic ref,
116 int refs_read_symbolic_ref(struct ref_store
*ref_store
, const char *refname
,
117 struct strbuf
*referent
);
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.
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
134 * If `initial_transaction` is truish, then all collision checks with
135 * preexisting refs are skipped.
137 * extras and skip must be sorted.
139 enum ref_transaction_error
refs_verify_refname_available(struct ref_store
*refs
,
141 const struct string_list
*extras
,
142 const struct string_list
*skip
,
143 unsigned int initial_transaction
,
146 int refs_ref_exists(struct ref_store
*refs
, const char *refname
);
148 int should_autocreate_reflog(enum log_refs_config log_all_ref_updates
,
149 const char *refname
);
151 int is_branch(const char *refname
);
153 #define REF_STORE_CREATE_ON_DISK_IS_WORKTREE (1 << 0)
155 int ref_store_create_on_disk(struct ref_store
*refs
, int flags
, struct strbuf
*err
);
158 * Release all memory and resources associated with the ref store.
160 void ref_store_release(struct ref_store
*ref_store
);
163 * Remove the ref store from disk. This deletes all associated data.
165 int ref_store_remove_on_disk(struct ref_store
*refs
, struct strbuf
*err
);
168 * Return the peeled value of the oid currently being iterated via
169 * for_each_ref(), etc. This is equivalent to calling:
171 * peel_object(r, oid, &peeled);
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.
177 int peel_iterated_oid(struct repository
*r
,
178 const struct object_id
*base
, struct object_id
*peeled
);
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.
186 int repo_resolve_gitlink_ref(struct repository
*r
,
187 const char *submodule
, const char *refname
,
188 struct object_id
*oid
);
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
195 int refname_match(const char *abbrev_name
, const char *full_name
);
198 * Given a 'prefix' expand it by the rules in 'ref_rev_parse_rules' and add
199 * the results to 'prefixes'
202 void expand_ref_prefix(struct strvec
*prefixes
, const char *prefix
);
204 int expand_ref(struct repository
*r
, const char *str
, int len
, struct object_id
*oid
, char **ref
);
205 int repo_dwim_ref(struct repository
*r
, const char *str
, int len
,
206 struct object_id
*oid
, char **ref
, int nonfatal_dangling_mark
);
207 int repo_dwim_log(struct repository
*r
, const char *str
, int len
, struct object_id
*oid
, char **ref
);
210 * Retrieves the default branch name for newly-initialized repositories.
212 * The return value is an allocated string.
214 char *repo_default_branch_name(struct repository
*r
, int quiet
);
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").
222 * Note that the resulting name may not be a syntactically valid refname.
224 * If "allowed" is non-zero, restrict the set of allowed expansions. See
225 * repo_interpret_branch_name() for details.
227 void copy_branchname(struct strbuf
*sb
, const char *name
,
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/.
234 * The return value is "0" if the result is valid, and "-1" otherwise.
236 int check_branch_ref(struct strbuf
*sb
, const char *name
);
239 * Similar for a tag name in refs/tags/.
241 * The return value is "0" if the result is valid, and "-1" otherwise.
243 int check_tag_ref(struct strbuf
*sb
, const char *name
);
246 * A ref_transaction represents a collection of reference updates that
247 * should succeed or fail together.
252 * - Allocate and initialize a `struct ref_transaction` by calling
253 * `ref_transaction_begin()`.
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()`
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.
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.
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.
283 * - Then finally, call `ref_transaction_free()` to free the
284 * `ref_transaction` data structure.
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).
291 * Putting it all together, a complete reference update looks like
293 * struct ref_transaction *transaction;
294 * struct strbuf err = STRBUF_INIT;
297 * transaction = ref_store_transaction_begin(refs, 0, &err);
298 * if (!transaction ||
299 * ref_transaction_update(...) ||
300 * ref_transaction_create(...) ||
302 * ref_transaction_commit(transaction, &err)) {
303 * error("%s", err.buf);
306 * ref_transaction_free(transaction);
307 * strbuf_release(&err);
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.
318 * The message is appended to err without first clearing err.
319 * err will not be '\n' terminated.
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.
329 struct ref_transaction
;
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
336 enum reference_status
{
337 /* Reference is a symbolic reference. */
338 REF_ISSYMREF
= (1 << 0),
340 /* Reference is a packed reference. */
341 REF_ISPACKED
= (1 << 1),
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.
349 REF_ISBROKEN
= (1 << 2),
352 * Reference name is not well formed.
354 * See git-check-ref-format(1) for the definition of well formed ref names.
356 REF_BAD_NAME
= (1 << 3),
359 /* A reference passed to `for_each_ref()`-style callbacks. */
361 /* The fully-qualified name of the reference. */
364 /* The target of a symbolic ref. `NULL` for direct references. */
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.
372 const struct object_id
*oid
;
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()`.
379 const struct object_id
*peeled_oid
;
381 /* A bitfield of `enum reference_status` flags. */
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.
390 * Return `0` if the reference could be peeled, a negative error code
393 int reference_get_peeled_oid(struct repository
*repo
,
394 const struct reference
*ref
,
395 struct object_id
*peeled_oid
);
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.
403 typedef int each_ref_fn(const struct reference
*ref
, void *cb_data
);
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.
414 int refs_head_ref(struct ref_store
*refs
,
415 each_ref_fn fn
, void *cb_data
);
416 int refs_for_each_ref(struct ref_store
*refs
,
417 each_ref_fn fn
, void *cb_data
);
418 int refs_for_each_ref_in(struct ref_store
*refs
, const char *prefix
,
419 each_ref_fn fn
, void *cb_data
);
420 int refs_for_each_tag_ref(struct ref_store
*refs
,
421 each_ref_fn fn
, void *cb_data
);
422 int refs_for_each_branch_ref(struct ref_store
*refs
,
423 each_ref_fn fn
, void *cb_data
);
424 int refs_for_each_remote_ref(struct ref_store
*refs
,
425 each_ref_fn fn
, void *cb_data
);
426 int refs_for_each_replace_ref(struct ref_store
*refs
,
427 each_ref_fn fn
, void *cb_data
);
430 * references matching any pattern in "exclude_patterns" are omitted from the
431 * result set on a best-effort basis.
433 int 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
);
438 * iterate all refs in "patterns" by partitioning patterns into disjoint sets
439 * and iterating the longest-common prefix of each set.
441 * references matching any pattern in "exclude_patterns" are omitted from the
442 * result set on a best-effort basis.
444 * callers should be prepared to ignore references that they did not ask for.
446 int 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
);
452 /* iterates all refs that match the specified glob pattern. */
453 int refs_for_each_glob_ref(struct ref_store
*refs
, each_ref_fn fn
,
454 const char *pattern
, void *cb_data
);
456 int refs_for_each_glob_ref_in(struct ref_store
*refs
, each_ref_fn fn
,
457 const char *pattern
, const char *prefix
, void *cb_data
);
459 int refs_head_ref_namespaced(struct ref_store
*refs
, each_ref_fn fn
, void *cb_data
);
462 * references matching any pattern in "exclude_patterns" are omitted from the
463 * result set on a best-effort basis.
465 int refs_for_each_namespaced_ref(struct ref_store
*refs
,
466 const char **exclude_patterns
,
467 each_ref_fn fn
, void *cb_data
);
469 /* can be used to learn about broken ref and symref */
470 int refs_for_each_rawref(struct ref_store
*refs
, each_ref_fn fn
, void *cb_data
);
471 int refs_for_each_rawref_in(struct ref_store
*refs
, const char *prefix
,
472 each_ref_fn fn
, void *cb_data
);
475 * Iterates over all refs including root refs, i.e. pseudorefs and HEAD.
477 int refs_for_each_include_root_refs(struct ref_store
*refs
, each_ref_fn fn
,
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.
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.
489 void normalize_glob_ref(struct string_list_item
*item
, const char *prefix
,
490 const char *pattern
);
492 static inline const char *has_glob_specials(const char *pattern
)
494 return strpbrk(pattern
, "?*[");
497 void refs_warn_dangling_symrefs(struct ref_store
*refs
, FILE *fp
,
498 const char *indent
, int dry_run
,
499 const struct string_list
*refnames
);
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.
508 #define REFS_OPTIMIZE_PRUNE (1 << 0)
509 #define REFS_OPTIMIZE_AUTO (1 << 1)
511 struct refs_optimize_opts
{
513 struct ref_exclusions
*exclusions
;
514 struct string_list
*includes
;
518 * Optimize the ref store. The exact behavior is up to the backend.
519 * For the files backend, this is equivalent to packing refs.
521 int refs_optimize(struct ref_store
*refs
, struct refs_optimize_opts
*opts
);
524 * Check if refs backend can be optimized by calling 'refs_optimize'.
526 int refs_optimize_required(struct ref_store
*ref_store
,
527 struct refs_optimize_opts
*opts
,
531 * Setup reflog before using. Fill in err and return -1 on failure.
533 int refs_create_reflog(struct ref_store
*refs
, const char *refname
,
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"
541 * If we found the reflog entry in question, returns 0 (and details of the
542 * entry can be found in the out-parameters).
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.
550 int 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
);
556 /** Check if a particular reflog exists */
557 int refs_reflog_exists(struct ref_store
*refs
, const char *refname
);
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().
567 int refs_delete_ref(struct ref_store
*refs
, const char *msg
,
569 const struct object_id
*old_oid
,
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().
578 int refs_delete_refs(struct ref_store
*refs
, const char *msg
,
579 struct string_list
*refnames
, unsigned int flags
);
581 /** Delete a reflog */
582 int refs_delete_reflog(struct ref_store
*refs
, const char *refname
);
585 * Callback to process a reflog entry found by the iteration functions (see
588 * The committer parameter is a single string, in the form
589 * "$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" (without double quotes).
591 * The timestamp parameter gives the time when entry was created as the number
592 * of seconds since the UNIX epoch.
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
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.
607 * The cb_data is a caller-supplied pointer given to the iterator
610 typedef 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
,
618 /* Iterate over reflog entries in the log for `refname`. */
620 /* oldest entry first */
621 int refs_for_each_reflog_ent(struct ref_store
*refs
, const char *refname
,
622 each_reflog_ent_fn fn
, void *cb_data
);
624 /* youngest entry first */
625 int refs_for_each_reflog_ent_reverse(struct ref_store
*refs
,
627 each_reflog_ent_fn fn
,
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.
635 typedef int each_reflog_fn(const char *refname
, void *cb_data
);
638 * Calls the specified function for each reflog file until it returns nonzero,
639 * and returns the value. Reflog file order is unspecified.
641 int refs_for_each_reflog(struct ref_store
*refs
, each_reflog_fn fn
, void *cb_data
);
643 #define REFNAME_ALLOW_ONELEVEL 1
644 #define REFNAME_REFSPEC_PATTERN 2
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.
654 int check_refname_format(const char *refname
, int flags
);
657 * Check the reference database for consistency. Return 0 if refs and
658 * reflogs are consistent, and non-zero otherwise. The errors will be
661 int refs_fsck(struct ref_store
*refs
, struct fsck_options
*o
,
662 struct worktree
*wt
);
665 * Apply the rules from check_refname_format, but mutate the result until it
666 * is acceptable, and place the result in "out".
668 void sanitize_refname_component(const char *refname
, struct strbuf
*out
);
670 const char *prettify_refname(const char *refname
);
672 char *refs_shorten_unambiguous_ref(struct ref_store
*refs
,
673 const char *refname
, int strict
);
675 /** rename ref, return 0 on success **/
676 int refs_rename_ref(struct ref_store
*refs
, const char *oldref
,
677 const char *newref
, const char *logmsg
);
679 /** copy ref, return 0 on success **/
680 int refs_copy_existing_ref(struct ref_store
*refs
, const char *oldref
,
681 const char *newref
, const char *logmsg
);
683 int refs_update_symref(struct ref_store
*refs
, const char *refname
,
684 const char *target
, const char *logmsg
);
686 int 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
);
691 UPDATE_REFS_MSG_ON_ERR
,
692 UPDATE_REFS_DIE_ON_ERR
,
693 UPDATE_REFS_QUIET_ON_ERR
696 enum ref_transaction_flag
{
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.
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.
708 REF_TRANSACTION_FLAG_INITIAL
= (1 << 0),
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.
715 REF_TRANSACTION_ALLOW_FAILURE
= (1 << 1),
719 * Begin a reference transaction. The reference transaction must
720 * be freed by calling ref_transaction_free().
722 struct ref_transaction
*ref_store_transaction_begin(struct ref_store
*refs
,
727 * Reference transaction updates
729 * The following four functions add a reference check or update to a
730 * ref_transaction. They have some common similar parameters:
732 * transaction -- a pointer to an open ref_transaction, obtained
733 * from ref_transaction_begin().
735 * refname -- the name of the reference to be affected.
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.
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
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
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.
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
765 * msg -- a message describing the change (for the reflog).
767 * err -- a strbuf for receiving a description of any error that
768 * might have occurred.
770 * The functions make internal copies of refname and msg, so the
771 * caller retains ownership of these parameters.
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
779 * The following flags can be passed to ref_transaction_update() etc.
780 * Internally, they are stored in `ref_update::flags`, along with some
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.
789 #define REF_NO_DEREF (1 << 0)
792 * Force the creation of a reflog for this reference, even if it
793 * didn't previously have a reflog.
795 #define REF_FORCE_CREATE_REFLOG (1 << 1)
798 * Blindly write an object_id. This is useful for testing data corruption
801 #define REF_SKIP_OID_VERIFICATION (1 << 10)
804 * Skip verifying refname. This is useful for testing data corruption scenarios.
806 #define REF_SKIP_REFNAME_VERIFICATION (1 << 11)
809 * Skip creation of a reflog entry, even if it would have otherwise been
812 #define REF_SKIP_CREATE_REFLOG (1 << 12)
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.
819 #define REF_LOG_USE_PROVIDED_OIDS (1 << 13)
822 * Bitmask of all of the flags that are allowed to be passed in to
823 * ref_transaction_update() and friends:
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)
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.
844 * See the above comment "Reference transaction updates" for more
847 int ref_transaction_update(struct ref_transaction
*transaction
,
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
,
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.
862 int ref_transaction_update_reflog(struct ref_transaction
*transaction
,
864 const struct object_id
*new_oid
,
865 const struct object_id
*old_oid
,
866 const char *committer_info
,
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
877 * See the above comment "Reference transaction updates" for more
880 int ref_transaction_create(struct ref_transaction
*transaction
,
882 const struct object_id
*new_oid
,
883 const char *new_target
,
884 unsigned int flags
, const char *msg
,
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).
892 * See the above comment "Reference transaction updates" for more
895 int ref_transaction_delete(struct ref_transaction
*transaction
,
897 const struct object_id
*old_oid
,
898 const char *old_target
,
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.
908 * See the above comment "Reference transaction updates" for more
911 int ref_transaction_verify(struct ref_transaction
*transaction
,
913 const struct object_id
*old_oid
,
914 const char *old_target
,
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()`.
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.
931 * Callers who don't need such fine-grained control over committing
932 * reference transactions should just call `ref_transaction_commit()`.
934 int ref_transaction_prepare(struct ref_transaction
*transaction
,
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
944 int ref_transaction_commit(struct ref_transaction
*transaction
,
948 * Abort `transaction`, which has been begun and possibly prepared,
949 * but not yet committed.
951 int ref_transaction_abort(struct ref_transaction
*transaction
,
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
960 typedef 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
,
964 void ref_transaction_for_each_queued_update(struct ref_transaction
*transaction
,
965 ref_transaction_for_each_queued_update_fn cb
,
969 * Execute the given callback function for each of the reference updates which
970 * have been rejected in the given transaction.
972 typedef 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
,
979 void ref_transaction_for_each_rejected_update(struct ref_transaction
*transaction
,
980 ref_transaction_for_each_rejected_update_fn cb
,
984 * Translate errors to human readable error messages.
986 const char *ref_transaction_error_msg(enum ref_transaction_error err
);
989 * Free `*transaction` and all associated data.
991 void ref_transaction_free(struct ref_transaction
*transaction
);
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`
1001 int 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
);
1005 int parse_hide_refs_config(const char *var
, const char *value
, const char *,
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.
1016 int ref_is_hidden(const char *, const char *, const struct strvec
*);
1019 * Returns an array of patterns to use as excluded_patterns, if none of the
1020 * hidden references use the token '!' or '^'.
1022 const char **hidden_refs_to_excludes(const struct strvec
*hide_refs
);
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.
1029 const char **get_namespaced_exclude_patterns(const char **exclude_patterns
,
1030 const char *namespace,
1031 struct strvec
*out
);
1033 /* Is this a per-worktree ref living in the refs/ namespace? */
1034 int is_per_worktree_ref(const char *refname
);
1036 /* Describes how a refname relates to worktrees */
1037 enum 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 */
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
1057 enum 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
);
1062 enum expire_reflog_flags
{
1063 EXPIRE_REFLOGS_DRY_RUN
= 1 << 0,
1064 EXPIRE_REFLOGS_UPDATE_REF
= 1 << 1,
1065 EXPIRE_REFLOGS_REWRITE
= 1 << 2,
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.
1074 * reflog_expiry_prepare_fn -- Called once after the reference is
1075 * locked. Called with the OID of the locked reference.
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
1081 * reflog_expiry_cleanup_fn -- Called once before the reference is
1084 typedef void reflog_expiry_prepare_fn(const char *refname
,
1085 const struct object_id
*oid
,
1087 typedef int reflog_expiry_should_prune_fn(struct object_id
*ooid
,
1088 struct object_id
*noid
,
1090 timestamp_t timestamp
, int tz
,
1091 const char *message
, void *cb_data
);
1092 typedef void reflog_expiry_cleanup_fn(void *cb_data
);
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.
1100 int refs_reflog_expire(struct ref_store
*refs
,
1101 const char *refname
,
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
);
1108 struct ref_store
*get_main_ref_store(struct repository
*r
);
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
1118 * const char *path = "path/to/submodule"
1119 * if (add_submodule_odb(path))
1120 * die("Error submodule '%s' not populated.", path);
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.
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.
1134 * static int handle_remote_ref(const char *refname,
1135 * const unsigned char *sha1, int flags, void *cb_data)
1137 * struct strbuf *output = cb_data;
1138 * strbuf_addf(output, "%s\n", refname);
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.
1151 * For backwards compatibility, submodule=="" is treated the same as
1154 struct ref_store
*repo_get_submodule_ref_store(struct repository
*repo
,
1155 const char *submodule
);
1156 struct ref_store
*get_worktree_ref_store(const struct worktree
*wt
);
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.
1164 struct ref_namespace_info
{
1166 enum decoration_type decoration
;
1169 * If 'exact' is true, then we must match the 'ref' exactly.
1170 * Otherwise, use a prefix match.
1172 * 'ref_updated' is for internal use. It represents whether the
1173 * 'ref' value was replaced from its original literal version.
1179 enum ref_namespace
{
1183 NAMESPACE_REMOTE_REFS
,
1188 NAMESPACE_REWRITTEN
,
1194 /* See refs.c for the contents of this array. */
1195 extern struct ref_namespace_info ref_namespace
[NAMESPACE__COUNT
];
1198 * Some ref namespaces can be modified by config values or environment
1199 * variables. Modify a namespace as specified by its ref_namespace key.
1201 void update_ref_namespace(enum ref_namespace
namespace, char *ref
);
1204 * Check whether the provided name names a root reference. This function only
1205 * performs a syntactic check.
1207 * A root ref is a reference that lives in the root of the reference hierarchy.
1208 * These references must conform to special syntax:
1210 * - Their name must be all-uppercase or underscores ("_").
1212 * - Their name must end with "_HEAD". As a special rule, "HEAD" is a root
1215 * - Their name may not contain a slash.
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:
1222 * - BISECT_EXPECTED_REV
1224 * - NOTES_MERGE_PARTIAL
1230 int is_root_ref(const char *refname
);
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
1238 * - FETCH_HEAD may contain multiple object IDs, and each one of them
1239 * carries additional metadata like where it came from.
1241 * - MERGE_HEAD may contain multiple object IDs when merging multiple
1244 * Reading, writing or deleting references must consistently go either
1245 * through the filesystem (pseudorefs) or through the reference
1246 * backend (normal ones).
1248 int is_pseudo_ref(const char *refname
);
1251 * The following flags can be passed to `repo_migrate_ref_storage_format()`:
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.
1257 * - REPO_MIGRATE_REF_STORAGE_FORMAT_SKIP_REFLOG: skip migration of reflogs.
1259 #define REPO_MIGRATE_REF_STORAGE_FORMAT_DRYRUN (1 << 0)
1260 #define REPO_MIGRATE_REF_STORAGE_FORMAT_SKIP_REFLOG (1 << 1)
1263 * Migrate the ref storage format used by the repository to the
1266 int repo_migrate_ref_storage_format(struct repository
*repo
,
1267 enum ref_storage_format format
,
1269 struct strbuf
*err
);
1272 * Reference iterators
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.
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.
1293 * Putting it all together, a typical iteration looks like this:
1296 * struct ref_iterator *iter = ...;
1298 * while ((ok = ref_iterator_advance(iter)) == ITER_OK) {
1299 * if (want_to_stop_iteration()) {
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));
1309 * if (ok != ITER_DONE)
1311 * ref_iterator_free(iter);
1313 struct ref_iterator
;
1316 * These flags are passed to refs_ref_iterator_begin() (and do_for_each_ref(),
1319 enum do_for_each_ref_flags
{
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).
1329 DO_FOR_EACH_INCLUDE_BROKEN
= (1 << 0),
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.
1337 DO_FOR_EACH_PER_WORKTREE_ONLY
= (1 << 1),
1340 * Omit dangling symrefs from output; this only has an effect with
1341 * INCLUDE_BROKEN, since they are otherwise not included at all.
1343 DO_FOR_EACH_OMIT_DANGLING_SYMREFS
= (1 << 2),
1346 * Include root refs i.e. HEAD and pseudorefs along with the regular
1349 DO_FOR_EACH_INCLUDE_ROOT_REFS
= (1 << 3),
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.
1358 struct 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
);
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
1371 int ref_iterator_advance(struct ref_iterator
*ref_iterator
);
1373 enum ref_iterator_seek_flag
{
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
1380 REF_ITERATOR_SEEK_SET_PREFIX
= (1 << 0),
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.
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.
1392 * Returns 0 on success, a negative error code otherwise.
1394 int ref_iterator_seek(struct ref_iterator
*ref_iterator
, const char *refname
,
1395 unsigned int flags
);
1397 /* Free the reference iterator and any associated resources. */
1398 void ref_iterator_free(struct ref_iterator
*ref_iterator
);
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
1409 int do_for_each_ref_iterator(struct ref_iterator
*iter
,
1410 each_ref_fn fn
, void *cb_data
);