| #ifndef RESET_H | |
| #define RESET_H | |
| #include "hash.h" | |
| #include "repository.h" | |
| #define GIT_REFLOG_ACTION_ENVIRONMENT "GIT_REFLOG_ACTION" | |
| enum reset_working_tree_flags { | |
| /* Request a detached checkout */ | |
| RESET_WORKING_TREE_DETACH = (1 << 0), | |
| /* Request a reset rather than a checkout */ | |
| RESET_WORKING_TREE_HARD = (1 << 1), | |
| /* Run the post-checkout hook */ | |
| RESET_WORKING_TREE_RUN_POST_CHECKOUT_HOOK = (1 << 2), | |
| /* Only update refs, do not touch the worktree */ | |
| RESET_WORKING_TREE_REFS_ONLY = (1 << 3), | |
| /* Update HEAD */ | |
| RESET_WORKING_TREE_UPDATE_HEAD = (1 << 4), | |
| /* Update ORIG_HEAD */ | |
| RESET_WORKING_TREE_UPDATE_ORIG_HEAD = (1 << 5), | |
| /* | |
| * Perform a dry-run by performing the operation without updating | |
| * any user-visible state. | |
| */ | |
| RESET_WORKING_TREE_DRY_RUN = (1 << 6), | |
| }; | |
| struct reset_working_tree_options { | |
| /* | |
| * The commit to checkout/reset to. Defaults to HEAD. | |
| */ | |
| const struct object_id *oid; | |
| /* | |
| * The commit to checkout/reset from when doing a two-way merge. This | |
| * is used as one of the sides to merge. | |
| */ | |
| const struct object_id *oid_from; | |
| /* | |
| * 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. | |
| */ | |
| enum reset_working_tree_flags 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_WORKING_TREE_UPDATE_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_working_tree(struct repository *r, const struct reset_working_tree_options *opts); | |
| #endif |