diff mbox series

[1/2] Revert "switch: no worktree status unless real branch switch happens"

Message ID 538420ffd575f1705e9fb764f9d86e5d4d7f25ad.1566415112.git.gitgitgadget@gmail.com (mailing list archive)
State New, archived
Headers show
Series Revert/delay performance regression in 'git checkout -b' | expand

Commit Message

Johannes Schindelin via GitGitGadget Aug. 21, 2019, 7:18 p.m. UTC
From: Derrick Stolee <dstolee@microsoft.com>

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 <dstolee@microsoft.com>
---
 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

Comments

SZEDER Gábor Aug. 21, 2019, 10:15 p.m. UTC | #1
On Wed, Aug 21, 2019 at 12:18:33PM -0700, Derrick Stolee via GitGitGadget wrote:
> 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.

It always makes me sad when I see a pull request, where all the
relevant information is only included in the PR, which will not be
part of the history, but not in the commit messages...


>  builtin/.checkout.c.swp           | Bin 0 -> 77824 bytes

> 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#a46<X03c_z1GgCe3>dYjdA(>2=r6*}KnI2}zLK2GV?&_Y(bXPT1
> z)icux34uRC00rR{;pJ5jL_ico7FiV85d;D8CG1O3By6%HioE<k-*fK$ZB^AXi9sKq

Uh-oh.
Derrick Stolee Aug. 22, 2019, 1:41 p.m. UTC | #2
On 8/21/2019 6:15 PM, SZEDER Gábor wrote:
> On Wed, Aug 21, 2019 at 12:18:33PM -0700, Derrick Stolee via GitGitGadget wrote:
>> 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.
> 
> It always makes me sad when I see a pull request, where all the
> relevant information is only included in the PR, which will not be
> part of the history, but not in the commit messages...

An issue with the RFC quality at the moment. I'll do a better job
if we decide to move this direction.
 
>>  builtin/.checkout.c.swp           | Bin 0 -> 77824 bytes
> 
>> 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#a46<X03c_z1GgCe3>dYjdA(>2=r6*}KnI2}zLK2GV?&_Y(bXPT1
>> z)icux34uRC00rR{;pJ5jL_ico7FiV85d;D8CG1O3By6%HioE<k-*fK$ZB^AXi9sKq
> 
> Uh-oh.

Whoops! I thought I removed this in time to submit, but I guess I
did not.

-Stolee
diff mbox series

Patch

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 '<something>' 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 <new_branch>" 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
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%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 [<options>] <branch>"),
 	N_("git checkout [<options>] [<branch>] -- <file>..."),
@@ -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 <new_branch>."
+ */
+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 <start_point>
+	 */
+	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 <new_branch> 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 &&