git/reset.h
Patrick Steinhardt 8a676bdc5c hash-ll: merge with "hash.h"
The "hash-ll.h" header was introduced via d1cbe1e6d8 (hash-ll.h: split
out of hash.h to remove dependency on repository.h, 2023-04-22) to make
explicit the split between hash-related functions that rely on the
global `the_repository`, and those that don't. This split is no longer
necessary now that we we have removed the reliance on `the_repository`.

Merge "hash-ll.h" back into "hash.h". This causes some code units to not
include "repository.h" anymore, which requires us to add some forward
declarations.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-06-14 10:26:33 -07:00

61 lines
1.5 KiB
C

#ifndef RESET_H
#define RESET_H
#include "hash.h"
#include "repository.h"
#define GIT_REFLOG_ACTION_ENVIRONMENT "GIT_REFLOG_ACTION"
/* Request a detached checkout */
#define RESET_HEAD_DETACH (1<<0)
/* Request a reset rather than a checkout */
#define RESET_HEAD_HARD (1<<1)
/* Run the post-checkout hook */
#define RESET_HEAD_RUN_POST_CHECKOUT_HOOK (1<<2)
/* Only update refs, do not touch the worktree */
#define RESET_HEAD_REFS_ONLY (1<<3)
/* Update ORIG_HEAD as well as HEAD */
#define RESET_ORIG_HEAD (1<<4)
struct reset_head_opts {
/*
* The commit to checkout/reset to. Defaults to HEAD.
*/
const struct object_id *oid;
/*
* Optional value to set ORIG_HEAD. Defaults to HEAD.
*/
const struct object_id *orig_head;
/*
* Optional branch to switch to.
*/
const char *branch;
/*
* Flags defined above.
*/
unsigned flags;
/*
* Optional reflog message for branch, defaults to head_msg.
*/
const char *branch_msg;
/*
* Optional reflog message for HEAD, if this omitted but oid or branch
* are given then default_reflog_action must be given.
*/
const char *head_msg;
/*
* Optional reflog message for ORIG_HEAD, if this omitted and flags
* contains RESET_ORIG_HEAD then default_reflog_action must be given.
*/
const char *orig_head_msg;
/*
* Action to use in default reflog messages, only required if a ref is
* being updated and the reflog messages above are omitted.
*/
const char *default_reflog_action;
};
int reset_head(struct repository *r, const struct reset_head_opts *opts);
#endif