diff options
author | Edward Thomson <ethomson@microsoft.com> | 2015-04-20 20:05:23 -0400 |
---|---|---|
committer | Edward Thomson <ethomson@microsoft.com> | 2015-05-11 14:12:31 -0400 |
commit | 12149a20ef7cfb67563c639f2583bce0cadb4df9 (patch) | |
tree | 5c3c060c4bece603c80efca52d47996d478588c1 | |
parent | f78bb2afb3a7f23264c4adf2e9debfa415ca8107 (diff) | |
download | libgit2-12149a20ef7cfb67563c639f2583bce0cadb4df9.tar.gz |
stash apply: default to at least GIT_CHECKOUT_SAFE
-rw-r--r-- | include/git2/stash.h | 4 | ||||
-rw-r--r-- | src/stash.c | 5 |
2 files changed, 6 insertions, 3 deletions
diff --git a/include/git2/stash.h b/include/git2/stash.h index 070aa9b76..bb17933bc 100644 --- a/include/git2/stash.h +++ b/include/git2/stash.h @@ -96,7 +96,9 @@ typedef enum { * @param repo The owning repository. * @param index The position within the stash list. 0 points to the * most recent stashed state. - * @param checkout_options Options to control how files are checked out + * @param checkout_options Options to control how files are checked out. + * A minimum strategy of `GIT_CHECKOUT_SAFE` is + * implied. * @param flags Flags to control the applying process. (see GIT_APPLY_* above) * * @return 0 on success, GIT_ENOTFOUND if there's no stashed state for the diff --git a/src/stash.c b/src/stash.c index e3e025771..3f60ee017 100644 --- a/src/stash.c +++ b/src/stash.c @@ -681,11 +681,12 @@ static void normalize_checkout_options( memcpy(checkout_opts, given_checkout_opts, sizeof(git_checkout_options)); } else { git_checkout_options default_checkout_opts = GIT_CHECKOUT_OPTIONS_INIT; - default_checkout_opts.checkout_strategy = GIT_CHECKOUT_SAFE; - memcpy(checkout_opts, &default_checkout_opts, sizeof(git_checkout_options)); } + if ((checkout_opts->checkout_strategy & (GIT_CHECKOUT_SAFE | GIT_CHECKOUT_FORCE)) == 0) + checkout_opts->checkout_strategy = GIT_CHECKOUT_SAFE; + if (!checkout_opts->our_label) checkout_opts->our_label = "Updated upstream"; |