diff options
-rw-r--r-- | include/git2/worktree.h | 7 | ||||
-rw-r--r-- | 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; |