From patchwork Wed Aug 21 19:18:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Arver via GitGitGadget X-Patchwork-Id: 11108067 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1767C1813 for ; Wed, 21 Aug 2019 19:18:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C32F922DD3 for ; Wed, 21 Aug 2019 19:18:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="c+Vi2z1z" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729467AbfHUTSk (ORCPT ); Wed, 21 Aug 2019 15:18:40 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:44143 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727976AbfHUTSj (ORCPT ); Wed, 21 Aug 2019 15:18:39 -0400 Received: by mail-wr1-f66.google.com with SMTP id p17so3070561wrf.11 for ; Wed, 21 Aug 2019 12:18:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:message-id:in-reply-to:references:from:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=0n1/XKw2r+PkCbI+p0ZA17hdyUxeZEByMijrrFy+tZk=; b=c+Vi2z1zgEIs4U6zkgmrZ4nyK7pgmrobatSL7LAkHWANipgVRetG4s9XaymMVx4O8y y8nnzIOsX1ELdmwbF4KCBM0ovtlLsQctpVjXzD1677tbPItHT7qzoimZE6vtBTyJgooy qR2BdOX4MYhzYYTHUXJrovAjUHMXuVKx1mxWY6kqHC+0nDHVBDH+uFSLGobMW6WhLJN9 8OctThh1UjEH3SWivUFPzG2m9dDN4LgpH4J3swRk9qrbnmEmKqKMdbjWSYUsTo36GZ9K JKNTAq6C/7KxwjeIMsS9RjPcy1IgJhA0oamWLXYktb4mo54+wxN4KKZiC+PM1X73fb0Y Ee7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:in-reply-to:references:from :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=0n1/XKw2r+PkCbI+p0ZA17hdyUxeZEByMijrrFy+tZk=; b=jMDnMsR/i1aoU9ztcGqeDRjjkUrZoH9fdhbeHXc8NL/QRREGdfnM3Qd0lj6DD3pnLV 5tsC5qP1/Nu5SZq/i7zp14Or/SuM+7trLXXZm4tu+1r5LfTshhlmya2KUwo+9wl5we2u MnoiBcnuZVyjD1CPwTSjhlOer+1VBIQ1leNt/IVUMstNrp7aua6b+EtUL7PFLtFhXcz1 gnn5xi0JsTIuhkkUfyDCCMc4xIdA3khP3w8QNuBlgpsPcBbU6vm1LL/CLfLS6wQnGrHW Aab+Ab/hMNN8kRaTh25jOjUKeHuOHnAZV8PVgzghSC5Rp7oWklQaary0Ngvq9BPy2qJt Rv2A== X-Gm-Message-State: APjAAAUsHZEjKNRL2zXogj3wKE3kwEebcB4NDvR3LcBVg1Td/1kkLWAl MlhtZBsuxn3D16AJmPArSYoJq2aA X-Google-Smtp-Source: APXvYqx4vI4iBp1b/iy0jSUbvMLI2A1vj6lHhuGk9nAnWL3Y1sHg8lRVK7JFt6fkVir9RMEcFgmkdQ== X-Received: by 2002:adf:dec8:: with SMTP id i8mr41582349wrn.217.1566415114377; Wed, 21 Aug 2019 12:18:34 -0700 (PDT) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id o2sm1351089wmh.9.2019.08.21.12.18.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Aug 2019 12:18:33 -0700 (PDT) Date: Wed, 21 Aug 2019 12:18:33 -0700 (PDT) X-Google-Original-Date: Wed, 21 Aug 2019 19:18:31 GMT Message-Id: <538420ffd575f1705e9fb764f9d86e5d4d7f25ad.1566415112.git.gitgitgadget@gmail.com> In-Reply-To: References: From: "Derrick Stolee via GitGitGadget" Subject: [PATCH 1/2] Revert "switch: no worktree status unless real branch switch happens" Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: pclouds@gmail.com, git@jeffhostetler.com, Junio C Hamano , Derrick Stolee Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: Derrick Stolee This reverts commit 65f099b3988198f0fdf3ef7a21dc01c556d21fff, which removed logic for avoiding extra cost in "git checkout -b" in favor of the new "git switch -c". This will cause a performance issue for users in large repos. Signed-off-by: Derrick Stolee --- Documentation/config/checkout.txt | 8 ++ builtin/.checkout.c.swp | Bin 0 -> 77824 bytes builtin/checkout.c | 133 ++++++++++++++++++++++++++++-- t/t1090-sparse-checkout-scope.sh | 14 ++++ 4 files changed, 148 insertions(+), 7 deletions(-) create mode 100644 builtin/.checkout.c.swp diff --git a/Documentation/config/checkout.txt b/Documentation/config/checkout.txt index 6b646813ab..d6872ffa83 100644 --- a/Documentation/config/checkout.txt +++ b/Documentation/config/checkout.txt @@ -16,3 +16,11 @@ will checkout the '' branch on another remote, and by linkgit:git-worktree[1] when 'git worktree add' refers to a remote branch. This setting might be used for other checkout-like commands or functionality in the future. + +checkout.optimizeNewBranch:: + Optimizes the performance of "git checkout -b " when + using sparse-checkout. When set to true, git will not update the + repo based on the current sparse-checkout settings. This means it + will not update the skip-worktree bit in the index nor add/remove + files in the working directory to reflect the current sparse checkout + settings nor will it show the local changes. diff --git a/builtin/.checkout.c.swp b/builtin/.checkout.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..f6dad4abb02c265ee66b3f6f76d00d59b9b524a4 GIT binary patch literal 77824 zcmeIb37F(pRrf#a46dYjdA(>2=r6*}KnI2}zLK2GV?&_Y(bXPT1 z)icux34uRC00rR{;pJ5jL_ico7FiV85d;D8CG1O3By6%HioE5|Edle5P+t>NE&*Q|N(#aCVRsr$ZX%_F;O)^vOAg+@a+ zR{yuqY%L#K{Smu+y%%`Ke6v?w?4B{b++652TW8E1YRnvNFZaf0PN0mFkDMHVlOu2& zMqs%&S3Ub)YtA}zvn}<9jjT%^aQ}n1p`eqmoE(9ZBXDvAPL9CI5jZ&lCr9Aq2%H>& zlOymybp(1#_gnKs8h^*ofv1I^cPRb5OZfZ7@bej^`*#h0FNB}>4+X?>?iQ~1!q4kV z_wOFA-w=L&w{(APxE|~8ga*g*?-A}tJH)@2?*Clre&en`(*65{>(_*zlVL#P`z-y=*&d_Qz|O%m>ROZUU&lRr+5z{wFfIRYm~;N%FL9D$P~aB>7r zj=;$gI5`3*N8o?x2-IiStdY+ATItIup;7<;I11}Kz@LH_f~SHOxD4zBo4`ZBy}-Ys z{N4=S16~E54Xy)CFa;h760jD09Yy+6;9cOA;5ncN9t*Al4+m#~JA+T7l)nVL5Ii6J zE|>;qgUw(ZRKZVC?%xUC3f=_%0=yVJ3p^Pd0at@d!8R}kP60p0Xz+RPx8Tpf?|~b@ z)!=fl13Ud0gSUWZfDV`h_W@tP0PueBhv22)Mc@)}AMmfx#&^Lxf#{?Ot^`+r z)&8w*&Lx$lb~o92Ua~3v5r5jn(d61SYxTr=$xNL%kXoz0*r;)#GSjGT)gNPtew*<- z3ys!)^7YYk*Q`x8o}vFGv+bmJsF8G<^M`u;)@;p>+x14P*I7xLtz>DTKGPUaE)Ib(dX&`t_nGBR zhnrM1+c-9s9BnWJtz@B5Khm&g+Y7U6)}FDEWfMkVu|3<+Ky@1RUZcj4=t4#RQ?H7{ z#B&T*c6n~0K5wI(zHC=2n?{o-Bs(T*2luK^JipjjoLO2)hd((znXY%40ZJQ7mg>Dj zJ}LZ}RI^)ZK_@DQHRxj2MH)@T=rQS--DZ<9D zvYr{Jg^>!ys0rs~O`xUSUWbd7*hd8!daS>{59BX!a-EpJ$Gd3n8t;W%s z-x@Jmn{Fg~4({Ha96iKP8X2<&5+bpZxlVi0h|q>SnQqLrI}N(3;^}B>o_?L5jBFlB z&Phf#jf`12nnQbnCf0iG+M&j=N>(M$uh0Hs=B-QP8jEwdv%IiSqoS^kB_qsiuNv3v$e7Kby2U@uQRrP^TJ%aSzGCH7B4zkM zZ_FAsCMqUA28WMj9z++ii_4{qftNmF3go83d%TcWS-Qe(!JqJAm8 zwbW_MHIH#oeVOjmTQi4hP6k>GPNUQ^x6p)~y1kVJRU2A7+nk%LwU>HL=sC&%!6S{< z@?tEn*Qw7OPVE1oBK0v;w$PsEV!k7~+3qYsHQ|{7_ruFjnJusK>wa53uw`_(xl~(h zbmkkiqwUUNXf}>t*CJ%R}VNUg;_}K4y2L?Sm z+kh=~2iFsrvRc9dXI<2mTh^M{QpZYnHMC*8Qd&~`!`wUZc_gHBy6~_w!#MG^_Tg|n zjH%IyKa($s(e55?_LzRHZVId|b=vctMpt}Ib+uayD`6Dd@mUR}k98wH777UyG~3oA zY(dJ@Jbh6N%sV`(?V(mQA z=q%J}Dr__qGSgme;4N)LfS)qfNy}J5BhpKND)O zOHd4}2W}oNHW!yzQO#a$w$Ve530IAr2V4rbjcCH}k6&&!B6ZLorp@~snMsr}prI}@ zlQ9xwXlvH)sZ~aZs7;vL9@Lmzu_e&*)~k{$s#WJO=WX#BDoej zx_G5Nd!$(=mk>^G56&V5v>M65{S&nV7f#eB_w1awthQt7;=S7rOm3gtJ$c~r+Qr*; z?3>!ZM*9D`=)#`>(*Kj7(0vBI{`Wx}oDUufzJ~t(7Vso+6*v|A9Jm|!3HthffX{&U zf>(jx0?S|mJP>>tUHzZH8^Ke-UN8k73Z%pTGx$_!%S~#}$$uwD;N%FL9D$P~aB>7r zj=;$gI5`3*N8scLoX7}Vw zYVKma*{ak#^D|=!|389DzzmLK*k!RyjA5Y*W%Ckdw9INMBTY0eR{Y^utEwrzg_?;` zDqLLkaZ?lHleO99rAjnhgtsZ(itmmOu*cELk!sa%psBhUZ^YZv9Z!25EkitBJ@ecI zTRI9>eR)AvG_yHUSMG5)n)B@Db7fY}KR$=G9`BPqF9TDwY*F&2SZ$xdFMqRSXXDo9 z_+Dmg3oqc2={9nD#6Z!W)AV;oZCqqva{`fNdhOKS1GR}gJ1e8%_w7?tyDPjm z5}Jyk-==On-*k-sSfG}>jU-$(kH^SpFy-r}4=^qfAK*l;lxCwFo>8r7P35_WHI^nX zx(QTzG6;U6My*1|bMPhbaqth|W8gX9*`NzFM?WE8{|Dd}@D*^P{|dwq z|A;>Wg=`F@0V^12cjh)`^J~|LYs@Up*22Q8=x^T>@^<7{#?PeijlTQj>+_vxRBq7Q zw)YJ%N8cVhpzmeH!oxsE)*Sx4oj1ZzWmfp$eTQ8t-f%Bn$)l9tVu(-}=2psYQYCjt z{#J1u2KbZm5BG0&=_Xm&?9v_#bR>li{HJ!qwYJIi4t3f`llsy6N@AWW?R3q#<_r#e zd?q=Too;8r--W|jPV;Wcw@ZF7-)OWgbQ{q0Y%;%$r!LtbzmAVsvZd9oc9&-kRf8jE z!=UQywXBjsZngZL=Ak5Ku#S=PuII|~X1>TW?Rm)tvECWgJG92Wx&jLe?5DUG!sa)GML{qUlTVZldeK9; z;Ln0lrE-e7%x(`J72S)sMM^KO=>HPVmJUE4Z%gk);f}eyRU$j$eMw}`N%(oOR|Thh zXOPIA-W=?x=lztKtz z3Q39DS@e4)JlOx zDtIYlsX1nzc4QS^zI}KbPMm}1Dq59+PYCSt4H%4@lHDe`RY#TR86%Jw?GAW|M{HVWL$L7ZwnTy2&90uf{fYllB}td{SSW zZq6^am%FSe;$OF#&8X4IO3QxJ5J={UMG(~C(PrMXGrWN8`Rq5EV=;{c^>*9I^hz>E zMBz&E_~rUSb8dykTNhP-LRb{~HpYUqaEp06Co9ammn=5wXf{zZx4_7H7#t6OQ?b4l zF$9H?jH5V~6_@>nxro?eYfW1UxgsR2DNO6~qN0Hb4z62pA3?JU#H$0*gZNLwRu1HRs4UOu0*VM*2o^Q>l?0S!wTBD=!WPe*>#&eB@1>$CB4y!Eb|Kli; zSEE}>|GzOPlz)%Tuh{<^K@(gI9tF05M}o7#_pkxn0{$6%89X064?GT>3(f)e0H4MN z@Fws&@Cxup;ALP2)WJ@0UvLNTeQW~Xm0bY568si;CRhUJfO~^GfFEHi_yM>Xd>p(7 z+yJft4+m$0&ERJ21z!Lk1g{2v3Z4Uw0>$`GflXio_!V$x@D6MUe-30@cp3OZa4A>^ z?g8!&zKK2IP2ic}GH^CH1IW(sKyXJOd&Bp@m%xj_3&1|G7fgYF$ENTj@Imlu@Jw($ zmIq5RmQRlR$C)uLsWrPXd>M3GfggJH(H%G5iSpCFp@J*bPR(oxz>JPq8(8 z5d0~41!#c_z!*3c+!cHediXo=M(`wXJ-8060MUxh0NlEN3c24iF|l+1rBnMZIwwR? z=D291(`k1q=mru(lMSbJH=LstO|T&gkzh}_mn{tO(Y15f_hjkC23sQpdVHzZ(RIah zd(2d_CE1ib;R(sQ(nI3C_A*PV+3Cg??GmiAc!BU)3#yAxi3_WE0@s`N(>HKy5x3T> z0CW`nkWS=PaKV3Zlbiy&5UvP!wq8}%XASiJ@nWo(R~6c=7h`Cvy)@3^Zg&=8ZPzr! zoX5l(?9f3rz%YTJo*DaBz;D;%x~&N36=4=Q6fj#`T%0D($Rh0-7;8R*3|qhA%&XMH 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 Ul^dyn{$I$!_h?IFGP36X2Rz^&;s5{u literal 0 HcmV?d00001 diff --git a/builtin/checkout.c b/builtin/checkout.c index 6123f732a2..f894b9de1a 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -27,6 +27,8 @@ #include "wt-status.h" #include "xdiff-interface.h" +static int checkout_optimize_new_branch; + static const char * const checkout_usage[] = { N_("git checkout [] "), N_("git checkout [] [] -- ..."), @@ -71,6 +73,11 @@ struct checkout_opts { const char *ignore_unmerged_opt; int ignore_unmerged; + /* + * If new checkout options are added, skip_merge_working_tree + * should be updated accordingly. + */ + const char *new_branch; const char *new_branch_force; const char *new_orphan_branch; @@ -637,6 +644,112 @@ static void setup_branch_path(struct branch_info *branch) branch->path = strbuf_detach(&buf, NULL); } +/* + * Skip merging the trees, updating the index and working directory if and + * only if we are creating a new branch via "git checkout -b ." + */ +static int skip_merge_working_tree(const struct checkout_opts *opts, + const struct branch_info *old_branch_info, + const struct branch_info *new_branch_info) +{ + /* + * Do the merge if sparse checkout is on and the user has not opted in + * to the optimized behavior + */ + if (core_apply_sparse_checkout && !checkout_optimize_new_branch) + return 0; + + /* + * We must do the merge if we are actually moving to a new commit. + */ + if (!old_branch_info->commit || !new_branch_info->commit || + !oideq(&old_branch_info->commit->object.oid, + &new_branch_info->commit->object.oid)) + return 0; + + /* + * opts->patch_mode cannot be used with switching branches so is + * not tested here + */ + + /* + * opts->quiet only impacts output so doesn't require a merge + */ + + /* + * Honor the explicit request for a three-way merge or to throw away + * local changes + */ + if (opts->merge || opts->force) + return 0; + + /* + * --detach is documented as "updating the index and the files in the + * working tree" but this optimization skips those steps so fall through + * to the regular code path. + */ + if (opts->force_detach) + return 0; + + /* + * opts->writeout_stage cannot be used with switching branches so is + * not tested here + */ + + /* + * Honor the explicit ignore requests + */ + if (!opts->overwrite_ignore || opts->ignore_skipworktree || + opts->ignore_other_worktrees) + return 0; + + /* + * opts->show_progress only impacts output so doesn't require a merge + */ + + /* + * opts->overlay_mode cannot be used with switching branches so is + * not tested here + */ + + /* + * If we aren't creating a new branch any changes or updates will + * happen in the existing branch. Since that could only be updating + * the index and working directory, we don't want to skip those steps + * or we've defeated any purpose in running the command. + */ + if (!opts->new_branch) + return 0; + + /* + * new_branch_force is defined to "create/reset and checkout a branch" + * so needs to go through the merge to do the reset + */ + if (opts->new_branch_force) + return 0; + + /* + * A new orphaned branch requrires the index and the working tree to be + * adjusted to + */ + if (opts->new_orphan_branch) + return 0; + + /* + * Remaining variables are not checkout options but used to track state + */ + + /* + * Do the merge if this is the initial checkout. We cannot use + * is_cache_unborn() here because the index hasn't been loaded yet + * so cache_nr and timestamp.sec are always zero. + */ + if (!file_exists(get_index_file())) + return 0; + + return 1; +} + static int merge_working_tree(const struct checkout_opts *opts, struct branch_info *old_branch_info, struct branch_info *new_branch_info, @@ -1020,7 +1133,6 @@ static int switch_branches(const struct checkout_opts *opts, void *path_to_free; struct object_id rev; int flag, writeout_error = 0; - int do_merge = 1; trace2_cmd_mode("branch"); @@ -1039,7 +1151,6 @@ static int switch_branches(const struct checkout_opts *opts, BUG("'switch --orphan' should never accept a commit as starting point"); new_branch_info->commit = NULL; new_branch_info->name = "(empty)"; - do_merge = 1; } if (!new_branch_info->name) { @@ -1048,12 +1159,16 @@ static int switch_branches(const struct checkout_opts *opts, if (!new_branch_info->commit) die(_("You are on a branch yet to be born")); parse_commit_or_die(new_branch_info->commit); - - if (opts->only_merge_on_switching_branches) - do_merge = 0; } - if (do_merge) { + /* optimize the "checkout -b path */ + if (skip_merge_working_tree(opts, &old_branch_info, new_branch_info)) { + if (!checkout_optimize_new_branch && !opts->quiet) { + if (read_cache_preload(NULL) < 0) + return error(_("index file corrupt")); + show_local_changes(&new_branch_info->commit->object, &opts->diff_options); + } + } else { ret = merge_working_tree(opts, &old_branch_info, new_branch_info, &writeout_error); if (ret) { free(path_to_free); @@ -1073,6 +1188,11 @@ static int switch_branches(const struct checkout_opts *opts, static int git_checkout_config(const char *var, const char *value, void *cb) { + if (!strcmp(var, "checkout.optimizenewbranch")) { + checkout_optimize_new_branch = git_config_bool(var, value); + return 0; + } + if (!strcmp(var, "diff.ignoresubmodules")) { struct checkout_opts *opts = cb; handle_ignore_submodules_arg(&opts->diff_options, value); @@ -1747,7 +1867,6 @@ int cmd_switch(int argc, const char **argv, const char *prefix) opts.accept_ref = 1; opts.accept_pathspec = 0; opts.switch_branch_doing_nothing_is_ok = 0; - opts.only_merge_on_switching_branches = 1; opts.implicit_detach = 0; opts.can_switch_when_in_progress = 0; opts.orphan_from_empty_tree = 1; diff --git a/t/t1090-sparse-checkout-scope.sh b/t/t1090-sparse-checkout-scope.sh index 40cc004326..090b7fc3d3 100755 --- a/t/t1090-sparse-checkout-scope.sh +++ b/t/t1090-sparse-checkout-scope.sh @@ -31,6 +31,20 @@ test_expect_success 'perform sparse checkout of master' ' test_path_is_file c ' +test_expect_success 'checkout -b checkout.optimizeNewBranch interaction' ' + cp .git/info/sparse-checkout .git/info/sparse-checkout.bak && + test_when_finished " + mv -f .git/info/sparse-checkout.bak .git/info/sparse-checkout + git checkout master + " && + echo "/b" >>.git/info/sparse-checkout && + test "$(git ls-files -t b)" = "S b" && + git -c checkout.optimizeNewBranch=true checkout -b fast && + test "$(git ls-files -t b)" = "S b" && + git checkout -b slow && + test "$(git ls-files -t b)" = "H b" +' + test_expect_success 'merge feature branch into sparse checkout of master' ' git merge feature && test_path_is_file a && From patchwork Wed Aug 21 19:18:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Arver via GitGitGadget X-Patchwork-Id: 11108069 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7BEE4174A for ; Wed, 21 Aug 2019 19:18:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4BBE222DD3 for ; Wed, 21 Aug 2019 19:18:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="u2dK5NkR" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729695AbfHUTSl (ORCPT ); Wed, 21 Aug 2019 15:18:41 -0400 Received: from mail-wm1-f66.google.com ([209.85.128.66]:33565 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729349AbfHUTSk (ORCPT ); Wed, 21 Aug 2019 15:18:40 -0400 Received: by mail-wm1-f66.google.com with SMTP id p77so5436497wme.0 for ; Wed, 21 Aug 2019 12:18:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:message-id:in-reply-to:references:from:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=YVfeQYx2NkqyE6J8qU4sfnayQfPy8D/xAQ+WjoPsz60=; b=u2dK5NkRakqQyivd2k5bYmbNMGs5t13iHBEQ9I7IMb70tOlCiKAppiYA/99g/QOlJV 8jsaEkWabzH0x+Odf1oHjFuC6aBqwTF5/MYF9eSwnPWD6VwA86ppt9XfgI4u5ZcHhkxL TGKyyckUTdehCr2FHMigKuszzI9/GtwkisHssS+zQ6twA4RW7DMd+Ep8zvwyWbk9Ka/V dNO4Ae9u1xBn+5wOjl+Zh+Y4C4t9PHi7KdNSl2CYleboTBDbyRcE2yiy9uO9uJkID8KV L7yy2lodScwc+A2iFsSVtUi/UtC884fXOpOLD7LtKkrKk2tNSBaXrU4+6Kxt88pZCGNX nqew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:in-reply-to:references:from :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=YVfeQYx2NkqyE6J8qU4sfnayQfPy8D/xAQ+WjoPsz60=; b=lb7gKhnHI2lK+/n6AhBOc3umi+t2JiQrKvVJHiWKHtrpuJVSaHlK6iZn7ao4sbW0JT bpziCAbkdcHj31mJgIOtBwGlw/sBwDN+sdvmkOjC14d1NXk9VZnmr1kXcgjjZQpvyFgk AwuRtDbEpbmawr8Ja3V4UFFQbLwWx0UYjlw+1SdX2CXyiXZ6XW1gc1GaRZ75vkoe63Hj ef/EVGGQobGz+Qb/VWB6fLOHtlQ+NwK1z+HBCzeqyN9oirSRSFWnTJ3089NkhLf3kBPo bWPU0RlJeaCvCLRh9QcLRSqgDajhusqWNJ4JgX+VUW9/lhYFmA0WiQOxMy7aYjGfVQmd ySwg== X-Gm-Message-State: APjAAAWhLvg738m9EiR+xZLy4TsK2IYk3dXK+XbUHe8+OoxhM37/zrOk Vk5Jai0HKaRh6sunx3cDA4E2mJG+ X-Google-Smtp-Source: APXvYqyGlt3mQF34fmr5NpQLjiC2oJ8ASkxep4S7dgbD8z5wxBUNJvf/vYPajud8TFVcWLW+EpLXDg== X-Received: by 2002:a1c:3944:: with SMTP id g65mr1903388wma.68.1566415115194; Wed, 21 Aug 2019 12:18:35 -0700 (PDT) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id a11sm22303710wrx.59.2019.08.21.12.18.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Aug 2019 12:18:34 -0700 (PDT) Date: Wed, 21 Aug 2019 12:18:34 -0700 (PDT) X-Google-Original-Date: Wed, 21 Aug 2019 19:18:32 GMT Message-Id: In-Reply-To: References: From: "Derrick Stolee via GitGitGadget" Subject: [PATCH 2/2] DEPRECATION: warn about 'git checkout -b' Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: pclouds@gmail.com, git@jeffhostetler.com, Junio C Hamano , Derrick Stolee Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: Derrick Stolee Recommend that users use 'git switch -c' instead. Signed-off-by: Derrick Stolee --- builtin/.checkout.c.swp | Bin 77824 -> 0 bytes builtin/checkout.c | 9 ++++++++- 2 files changed, 8 insertions(+), 1 deletion(-) delete mode 100644 builtin/.checkout.c.swp diff --git a/builtin/.checkout.c.swp b/builtin/.checkout.c.swp deleted file mode 100644 index f6dad4abb02c265ee66b3f6f76d00d59b9b524a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77824 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%0D($Rh0-7;8R*3|qhA%&XMH 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 Ul^dyn{$I$!_h?IFGP36X2Rz^&;s5{u diff --git a/builtin/checkout.c b/builtin/checkout.c index f894b9de1a..32c8edccaf 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -1133,6 +1133,7 @@ static int switch_branches(const struct checkout_opts *opts, void *path_to_free; struct object_id rev; int flag, writeout_error = 0; + int do_merge = 1; trace2_cmd_mode("branch"); @@ -1159,15 +1160,20 @@ static int switch_branches(const struct checkout_opts *opts, if (!new_branch_info->commit) die(_("You are on a branch yet to be born")); parse_commit_or_die(new_branch_info->commit); + + if (opts->only_merge_on_switching_branches) + do_merge = 0; } /* optimize the "checkout -b path */ - if (skip_merge_working_tree(opts, &old_branch_info, new_branch_info)) { + if (!do_merge || skip_merge_working_tree(opts, &old_branch_info, new_branch_info)) { if (!checkout_optimize_new_branch && !opts->quiet) { if (read_cache_preload(NULL) < 0) return error(_("index file corrupt")); show_local_changes(&new_branch_info->commit->object, &opts->diff_options); } + if (!opts->only_merge_on_switching_branches) + warning(_("'git checkout -b ' is being deprecated in favor of 'git switch -c '. Please adjust your workflow accordingly.")); } else { ret = merge_working_tree(opts, &old_branch_info, new_branch_info, &writeout_error); if (ret) { @@ -1867,6 +1873,7 @@ int cmd_switch(int argc, const char **argv, const char *prefix) opts.accept_ref = 1; opts.accept_pathspec = 0; opts.switch_branch_doing_nothing_is_ok = 0; + opts.only_merge_on_switching_branches = 1; opts.implicit_detach = 0; opts.can_switch_when_in_progress = 0; opts.orphan_from_empty_tree = 1;