From: Ben Peart <benpe...@microsoft.com>

When doing a 'checkout -b' do a full checkout including updating the working
tree when doing the initial checkout.  This fixes the regression in behavior
caused by fa655d8411 checkout: optimize "git checkout -b <new_branch>"

Signed-off-by: Ben Peart <benpe...@microsoft.com>
---
 builtin/checkout.c         | 6 ++++++
 t/t2018-checkout-branch.sh | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/builtin/checkout.c b/builtin/checkout.c
index 6fadf412e8..af6b5c8336 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -517,6 +517,12 @@ static int skip_merge_working_tree(const struct 
checkout_opts *opts,
        if (core_apply_sparse_checkout && !checkout_optimize_new_branch)
                return 0;
 
+       /*
+        * We must do the merge if this is the initial checkout
+        */
+       if (is_cache_unborn())
+               return 0;
+
        /*
         * We must do the merge if we are actually moving to a new commit.
         */
diff --git a/t/t2018-checkout-branch.sh b/t/t2018-checkout-branch.sh
index 35999b3adb..c438889b0c 100755
--- a/t/t2018-checkout-branch.sh
+++ b/t/t2018-checkout-branch.sh
@@ -206,7 +206,7 @@ test_expect_success 'checkout -b after clone --no-checkout 
does a checkout of HE
        rev="$(git -C src rev-parse HEAD)" &&
        git clone --no-checkout src dest &&
        git -C dest checkout "$rev" -b branch &&
-       test_must_fail test -f dest/a
+       test -f dest/a
 '
 
 test_done
-- 
2.19.1.gvfs.1.16.g9d1374d

Reply via email to