From ffead012283cec68cafb3441e4be55030c94de74 Mon Sep 17 00:00:00 2001 From: punkymaniac Date: Thu, 9 Sep 2021 18:02:22 +0200 Subject: Allow user checkout options on git_worktree_add Extend the `git_worktree_add_options` to include `git_checkout_options`. github issue #5949 --- include/git2/worktree.h | 7 ++++++- src/worktree.c | 5 ++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/git2/worktree.h b/include/git2/worktree.h index 85cf1a608..ee6b04b0c 100644 --- a/include/git2/worktree.h +++ b/include/git2/worktree.h @@ -86,10 +86,15 @@ typedef struct git_worktree_add_options { int lock; /**< lock newly created worktree */ git_reference *ref; /**< reference to use for the new worktree HEAD */ + + /** + * Options for the checkout. + */ + git_checkout_options checkout_opts; } git_worktree_add_options; #define GIT_WORKTREE_ADD_OPTIONS_VERSION 1 -#define GIT_WORKTREE_ADD_OPTIONS_INIT {GIT_WORKTREE_ADD_OPTIONS_VERSION,0,NULL} +#define GIT_WORKTREE_ADD_OPTIONS_INIT {GIT_WORKTREE_ADD_OPTIONS_VERSION,0,NULL,GIT_CHECKOUT_OPTIONS_INIT} /** * Initialize git_worktree_add_options structure diff --git a/src/worktree.c b/src/worktree.c index e08d6d401..caf4c58ed 100644 --- a/src/worktree.c +++ b/src/worktree.c @@ -405,7 +405,10 @@ int git_worktree_add(git_worktree **out, git_repository *repo, goto out; /* Checkout worktree's HEAD */ - coopts.checkout_strategy = GIT_CHECKOUT_FORCE; + if (opts != NULL) + memcpy(&coopts, &wtopts.checkout_opts, sizeof(coopts)); + else + coopts.checkout_strategy = GIT_CHECKOUT_FORCE; if ((err = git_checkout_head(wt, &coopts)) < 0) goto out; -- cgit v1.2.1