Browse Source

Merge branch 'dl/checkout-p-merge-base'

Fix to a regression introduced during this cycle.

* dl/checkout-p-merge-base:
  checkout -p: handle tree arguments correctly again
maint
Junio C Hamano 4 years ago
parent
commit
04cd999638
  1. 6
      builtin/checkout.c
  2. 5
      t/t2016-checkout-patch.sh

6
builtin/checkout.c

@ -480,9 +480,11 @@ static int checkout_paths(const struct checkout_opts *opts, @@ -480,9 +480,11 @@ static int checkout_paths(const struct checkout_opts *opts,
* with the hex of the commit (whether it's in `...` form or
* not) for the run_add_interactive() machinery to work
* properly. However, there is special logic for the HEAD case
* so we mustn't replace that.
* so we mustn't replace that. Also, when we were given a
* tree-object, new_branch_info->commit would be NULL, but we
* do not have to do any replacement, either.
*/
if (rev && strcmp(rev, "HEAD"))
if (rev && new_branch_info->commit && strcmp(rev, "HEAD"))
rev = oid_to_hex_r(rev_oid, &new_branch_info->commit->object.oid);

if (opts->checkout_index && opts->checkout_worktree)

5
t/t2016-checkout-patch.sh

@ -123,4 +123,9 @@ test_expect_success PERL 'none of this moved HEAD' ' @@ -123,4 +123,9 @@ test_expect_success PERL 'none of this moved HEAD' '
verify_saved_head
'

test_expect_success PERL 'empty tree can be handled' '
test_when_finished "git reset --hard" &&
git checkout -p $(test_oid empty_tree) --
'

test_done

Loading…
Cancel
Save