git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
	rethab.ch@gmail.com, rappazzo@gmail.com,
	"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH v3 10/13] worktree.c: check whether branch is rebased in another worktree
Date: Fri, 22 Apr 2016 20:01:33 +0700	[thread overview]
Message-ID: <1461330096-21783-11-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1461330096-21783-1-git-send-email-pclouds@gmail.com>

This function find_shared_symref() is used in a couple places:

1) in builtin/branch.c: it's used to detect if a branch is checked out
   elsewhere and refuse to delete the branch.

2) in builtin/notes.c: it's used to detect if a note is being merged in
   another worktree

3) in branch.c, the function die_if_checked_out() is actually used by
   "git checkout" and "git worktree add" to see if a branch is already
   checked out elsewhere and refuse the operation.

In cases 1 and 3, if a rebase is ongoing, "HEAD" will be in detached
mode, find_shared_symref() fails to detect it and declares "no branch is
checked out here", which is not really what we want.

This patch tightens the test. If the given symref is "HEAD", we try to
detect if rebase is ongoing. If so return the branch being rebased. This
makes checkout and branch delete operations safer because you can't
checkout a branch being rebased in another place, or delete it.

Special case for checkout. If the current branch is being rebased,
git-rebase.sh may use "git checkout" to abort and return back to the
original branch. The updated test in find_shared_symref() will prevent
that and "git rebase --abort" will fail as a result.
find_shared_symref() and die_if_checked_out() have to learn a new
option ignore_current_worktree to loosen the test a bit.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 branch.c                |  4 ++--
 branch.h                |  2 +-
 builtin/checkout.c      |  2 +-
 builtin/worktree.c      |  4 ++--
 t/t2025-worktree-add.sh | 38 ++++++++++++++++++++++++++++++++++++++
 worktree.c              | 32 ++++++++++++++++++++++++++++++++
 6 files changed, 76 insertions(+), 6 deletions(-)

diff --git a/branch.c b/branch.c
index 1f1fbf5..a5a8dcb 100644
--- a/branch.c
+++ b/branch.c
@@ -334,12 +334,12 @@ void remove_branch_state(void)
 	unlink(git_path_squash_msg());
 }
 
-void die_if_checked_out(const char *branch)
+void die_if_checked_out(const char *branch, int ignore_current_worktree)
 {
 	const struct worktree *wt;
 
 	wt = find_shared_symref("HEAD", branch);
-	if (!wt)
+	if (!wt || (ignore_current_worktree && wt->is_current))
 		return;
 	skip_prefix(branch, "refs/heads/", &branch);
 	die(_("'%s' is already checked out at '%s'"),
diff --git a/branch.h b/branch.h
index d69163d..b2f9649 100644
--- a/branch.h
+++ b/branch.h
@@ -58,7 +58,7 @@ extern int read_branch_desc(struct strbuf *, const char *branch_name);
  * worktree and die (with a message describing its checkout location) if
  * it is.
  */
-extern void die_if_checked_out(const char *branch);
+extern void die_if_checked_out(const char *branch, int ignore_current_worktree);
 
 /*
  * Update all per-worktree HEADs pointing at the old ref to point the new ref.
diff --git a/builtin/checkout.c b/builtin/checkout.c
index efcbd8f..6041718 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -1111,7 +1111,7 @@ static int checkout_branch(struct checkout_opts *opts,
 		char *head_ref = resolve_refdup("HEAD", 0, sha1, &flag);
 		if (head_ref &&
 		    (!(flag & REF_ISSYMREF) || strcmp(head_ref, new->path)))
-			die_if_checked_out(new->path);
+			die_if_checked_out(new->path, 1);
 		free(head_ref);
 	}
 
diff --git a/builtin/worktree.c b/builtin/worktree.c
index d8e3795..12c0af7 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -205,7 +205,7 @@ static int add_worktree(const char *path, const char *refname,
 	if (!opts->detach && !strbuf_check_branch_ref(&symref, refname) &&
 		 ref_exists(symref.buf)) { /* it's a branch */
 		if (!opts->force)
-			die_if_checked_out(symref.buf);
+			die_if_checked_out(symref.buf, 0);
 	} else { /* must be a commit */
 		commit = lookup_commit_reference_by_name(refname);
 		if (!commit)
@@ -349,7 +349,7 @@ static int add(int ac, const char **av, const char *prefix)
 		if (!opts.force &&
 		    !strbuf_check_branch_ref(&symref, opts.new_branch) &&
 		    ref_exists(symref.buf))
-			die_if_checked_out(symref.buf);
+			die_if_checked_out(symref.buf, 0);
 		strbuf_release(&symref);
 	}
 
diff --git a/t/t2025-worktree-add.sh b/t/t2025-worktree-add.sh
index 3acb992..da54327 100755
--- a/t/t2025-worktree-add.sh
+++ b/t/t2025-worktree-add.sh
@@ -4,6 +4,8 @@ test_description='test git worktree add'
 
 . ./test-lib.sh
 
+. "$TEST_DIRECTORY"/lib-rebase.sh
+
 test_expect_success 'setup' '
 	test_commit init
 '
@@ -225,4 +227,40 @@ test_expect_success '"add" worktree with --checkout' '
 	test_cmp init.t swamp2/init.t
 '
 
+test_expect_success 'put a worktree under rebase' '
+	git worktree add under-rebase &&
+	(
+		cd under-rebase &&
+		set_fake_editor &&
+		FAKE_LINES="edit 1" git rebase -i HEAD^ &&
+		git worktree list | grep "under-rebase.*detached HEAD"
+	)
+'
+
+test_expect_success 'add a worktree, checking out a rebased branch' '
+	test_must_fail git worktree add new-rebase under-rebase &&
+	! test -d new-rebase
+'
+
+test_expect_success 'checking out a rebased branch from another worktree' '
+	git worktree add new-place &&
+	test_must_fail git -C new-place checkout under-rebase
+'
+
+test_expect_success 'not allow to delete a branch under rebase' '
+	(
+		cd under-rebase &&
+		test_must_fail git branch -D under-rebase
+	)
+'
+
+test_expect_success 'check out from current worktree branch ok' '
+	(
+		cd under-rebase &&
+		git checkout under-rebase &&
+		git checkout - &&
+		git rebase --abort
+	)
+'
+
 test_done
diff --git a/worktree.c b/worktree.c
index 927905b..5043756 100644
--- a/worktree.c
+++ b/worktree.c
@@ -3,6 +3,7 @@
 #include "strbuf.h"
 #include "worktree.h"
 #include "dir.h"
+#include "wt-status.h"
 
 void free_worktrees(struct worktree **worktrees)
 {
@@ -215,6 +216,30 @@ const char *get_worktree_git_dir(const struct worktree *wt)
 		return git_common_path("worktrees/%s", wt->id);
 }
 
+static int is_worktree_being_rebased(const struct worktree *wt,
+				     const char *target)
+{
+	struct wt_status_state state;
+	int found_rebase;
+
+	memset(&state, 0, sizeof(state));
+	found_rebase = wt_status_check_rebase(wt, &state) &&
+		((state.rebase_in_progress ||
+		  state.rebase_interactive_in_progress) &&
+		 state.branch &&
+		 starts_with(target, "refs/heads/") &&
+		 !strcmp(state.branch, target + strlen("refs/heads/")));
+	free(state.branch);
+	free(state.onto);
+	return found_rebase;
+}
+
+/*
+ * note: this function should be able to detect shared symref even if
+ * HEAD is temporarily detached (e.g. in the middle of rebase or
+ * bisect). New commands that do similar things should update this
+ * function as well.
+ */
 const struct worktree *find_shared_symref(const char *symref,
 					  const char *target)
 {
@@ -231,6 +256,13 @@ const struct worktree *find_shared_symref(const char *symref,
 	for (i = 0; worktrees[i]; i++) {
 		struct worktree *wt = worktrees[i];
 
+		if (wt->is_detached && !strcmp(symref, "HEAD")) {
+			if (is_worktree_being_rebased(wt, target)) {
+				existing = wt;
+				break;
+			}
+		}
+
 		strbuf_reset(&path);
 		strbuf_reset(&sb);
 		strbuf_addf(&path, "%s/%s",
-- 
2.8.0.rc0.210.gd302cd2

  parent reply	other threads:[~2016-04-22 13:02 UTC|newest]

Thread overview: 162+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-15 13:53 possible to checkout same branch in different worktree Reto Hablützel
2016-04-15 15:36 ` Junio C Hamano
2016-04-16  0:51   ` Duy Nguyen
2016-04-17 12:59     ` [PATCH 0/7] fix checking out a being-rebased branch Nguyễn Thái Ngọc Duy
2016-04-17 12:59       ` [PATCH 1/7] path.c: add git_common_path() and strbuf_git_common_path() Nguyễn Thái Ngọc Duy
2016-04-17 12:59       ` [PATCH 2/7] worktree.c: store "id" instead of "git_dir" Nguyễn Thái Ngọc Duy
2016-04-17 12:59       ` [PATCH 3/7] path.c: refactor and add worktree_git_path() Nguyễn Thái Ngọc Duy
2016-04-17 12:59       ` [PATCH 4/7] worktree.c: add worktree_git_path_..._head() Nguyễn Thái Ngọc Duy
2016-04-17 12:59       ` [PATCH 5/7] wt-status.c: make wt_status_get_state() support worktree Nguyễn Thái Ngọc Duy
2016-04-17 12:59       ` [PATCH 6/7] worktree.c: avoid referencing to worktrees[i] multiple times Nguyễn Thái Ngọc Duy
2016-04-17 12:59       ` [PATCH 7/7] checkout: prevent checking out a branch being rebased in another worktree Nguyễn Thái Ngọc Duy
2016-04-18 17:42       ` [PATCH 0/7] fix checking out a being-rebased branch Junio C Hamano
2016-04-19  1:04         ` Duy Nguyen
2016-04-19 20:43           ` Junio C Hamano
2016-04-20 13:24       ` [PATCH v2 00/12] " Nguyễn Thái Ngọc Duy
2016-04-20 13:24         ` [PATCH v2 01/12] path.c: add git_common_path() and strbuf_git_common_path() Nguyễn Thái Ngọc Duy
2016-04-20 18:11           ` Eric Sunshine
2016-04-21  0:28             ` Duy Nguyen
2016-04-20 13:24         ` [PATCH v2 02/12] worktree.c: store "id" instead of "git_dir" Nguyễn Thái Ngọc Duy
2016-04-20 13:24         ` [PATCH v2 03/12] worktree.c: make find_shared_symref() return struct worktree * Nguyễn Thái Ngọc Duy
2016-04-20 17:05           ` Junio C Hamano
2016-04-21  7:02           ` Eric Sunshine
2016-04-20 13:24         ` [PATCH v2 04/12] worktree.c: mark current worktree Nguyễn Thái Ngọc Duy
2016-04-21  7:20           ` Eric Sunshine
2016-04-21  8:19             ` Duy Nguyen
2016-04-21  9:33               ` Duy Nguyen
2016-04-21 14:23                 ` Eric Sunshine
2016-04-21 15:13                   ` Jeff King
2016-04-21 15:37                     ` Junio C Hamano
2016-04-21 15:40                       ` Jeff King
2016-04-21 15:42                         ` Junio C Hamano
2016-04-20 13:24         ` [PATCH v2 05/12] path.c: refactor and add worktree_git_path() Nguyễn Thái Ngọc Duy
2016-04-20 13:24         ` [PATCH v2 06/12] wt-status.c: split rebase detection out of wt_status_get_state() Nguyễn Thái Ngọc Duy
2016-04-20 13:48           ` Ramsay Jones
2016-04-20 13:54             ` Duy Nguyen
2016-04-20 13:24         ` [PATCH v2 07/12] wt-status.c: make wt_status_check_rebase() work on any worktree Nguyễn Thái Ngọc Duy
2016-04-20 13:24         ` [PATCH v2 08/12] worktree.c: avoid referencing to worktrees[i] multiple times Nguyễn Thái Ngọc Duy
2016-04-20 13:24         ` [PATCH v2 09/12] worktree.c: test if branch being rebased in another worktree Nguyễn Thái Ngọc Duy
2016-04-20 18:04           ` Junio C Hamano
2016-04-21  0:37             ` Duy Nguyen
2016-04-20 13:24         ` [PATCH v2 10/12] wt-status.c: split bisect detection out of wt_status_get_state() Nguyễn Thái Ngọc Duy
2016-04-20 13:24         ` [PATCH v2 11/12] worktree.c: test if branch being bisected in another worktree Nguyễn Thái Ngọc Duy
2016-04-20 13:24         ` [PATCH v2 12/12] branch: do not rename a branch under bisect or rebase Nguyễn Thái Ngọc Duy
2016-04-20 18:09         ` [PATCH v2 00/12] fix checking out a being-rebased branch Junio C Hamano
2016-04-22 13:01         ` [PATCH v3 00/13] nd/worktree-various-heads Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` [PATCH v3 01/13] dir.c: rename str(n)cmp_icase to fspath(n)cmp Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` [PATCH v3 02/13] path.c: add git_common_path() and strbuf_git_common_path() Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` [PATCH v3 03/13] worktree.c: store "id" instead of "git_dir" Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` [PATCH v3 04/13] worktree.c: make find_shared_symref() return struct worktree * Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` [PATCH v3 05/13] worktree.c: mark current worktree Nguyễn Thái Ngọc Duy
2016-05-06  7:51             ` Eric Sunshine
2016-05-06 10:21               ` Duy Nguyen
2016-05-10 14:14                 ` Duy Nguyen
2016-05-10 14:15                   ` [PATCH 1/7] completion: support git-worktree Nguyễn Thái Ngọc Duy
2016-05-10 14:15                     ` [PATCH 2/7] worktree.c: rewrite mark_current_worktree() to avoid strbuf Nguyễn Thái Ngọc Duy
2016-05-11  6:16                       ` Eric Sunshine
2016-05-10 14:15                     ` [PATCH 3/7] git-worktree.txt: keep subcommand listing in alphabetical order Nguyễn Thái Ngọc Duy
2016-05-10 14:15                     ` [PATCH 4/7] worktree.c: use is_dot_or_dotdot() Nguyễn Thái Ngọc Duy
2016-05-10 14:15                     ` [PATCH 5/7] worktree.c: add clear_worktree() Nguyễn Thái Ngọc Duy
2016-05-11  6:36                       ` Eric Sunshine
2016-05-11  6:42                         ` Eric Sunshine
2016-05-22  8:58                         ` Duy Nguyen
2016-05-10 14:15                     ` [PATCH 6/7] worktree: avoid 0{40}, too many zeroes, hard to read Nguyễn Thái Ngọc Duy
2016-05-10 14:15                     ` [PATCH 7/7] worktree: simplify prefixing paths Nguyễn Thái Ngọc Duy
2016-05-10 23:07                       ` Junio C Hamano
2016-05-11  0:46                         ` Duy Nguyen
2016-05-11  6:12                     ` [PATCH 1/7] completion: support git-worktree Eric Sunshine
2016-05-10 14:17                   ` [PATCH 1/5] worktree.c: add find_worktree_by_path() Nguyễn Thái Ngọc Duy
2016-05-10 14:17                     ` [PATCH 2/5] worktree.c: add is_main_worktree() Nguyễn Thái Ngọc Duy
2016-05-13 16:32                       ` Eric Sunshine
2016-05-10 14:17                     ` [PATCH 3/5] worktree.c: add is_worktree_locked() Nguyễn Thái Ngọc Duy
2016-05-13 16:52                       ` Eric Sunshine
2016-05-22  9:53                         ` Duy Nguyen
2016-05-23  2:04                           ` Eric Sunshine
2016-05-10 14:17                     ` [PATCH 4/5] worktree: add "lock" command Nguyễn Thái Ngọc Duy
2016-05-16  0:09                       ` Eric Sunshine
2016-05-22 10:31                         ` Duy Nguyen
2016-05-23  4:21                           ` Eric Sunshine
2016-05-16  0:40                       ` Eric Sunshine
2016-05-10 14:17                     ` [PATCH 5/5] worktree: add "unlock" command Nguyễn Thái Ngọc Duy
2016-05-16  0:42                       ` Eric Sunshine
2016-05-13 16:29                     ` [PATCH 1/5] worktree.c: add find_worktree_by_path() Eric Sunshine
2016-05-10 17:32                   ` [PATCH v3 05/13] worktree.c: mark current worktree Junio C Hamano
2016-05-10 23:03                   ` Junio C Hamano
2016-05-11  0:33                     ` Duy Nguyen
2016-05-22  9:33                   ` [PATCH v2 0/6] nd/worktree-cleanup-post-head-protection update Nguyễn Thái Ngọc Duy
2016-05-22  9:33                     ` [PATCH v2 1/6] completion: support git-worktree Nguyễn Thái Ngọc Duy
2016-05-22  9:33                     ` [PATCH v2 2/6] worktree.c: rewrite mark_current_worktree() to avoid strbuf Nguyễn Thái Ngọc Duy
2016-05-22  9:33                     ` [PATCH v2 3/6] git-worktree.txt: keep subcommand listing in alphabetical order Nguyễn Thái Ngọc Duy
2016-05-22  9:33                     ` [PATCH v2 4/6] worktree.c: use is_dot_or_dotdot() Nguyễn Thái Ngọc Duy
2016-05-22  9:33                     ` [PATCH v2 5/6] worktree: avoid 0{40}, too many zeroes, hard to read Nguyễn Thái Ngọc Duy
2016-05-22  9:33                     ` [PATCH v2 6/6] worktree: simplify prefixing paths Nguyễn Thái Ngọc Duy
2016-05-22 23:32                       ` Eric Sunshine
2016-05-23  4:31                         ` Eric Sunshine
2016-05-23  9:26                           ` Duy Nguyen
2016-05-23  1:09                     ` [PATCH v2 0/6] nd/worktree-cleanup-post-head-protection update Eric Sunshine
2016-05-22 10:43                   ` [PATCH v2 0/5] worktree lock/unlock Nguyễn Thái Ngọc Duy
2016-05-22 10:43                     ` [PATCH v2 1/5] worktree.c: add find_worktree_by_path() Nguyễn Thái Ngọc Duy
2016-05-23  1:41                       ` Eric Sunshine
2016-05-23  4:11                       ` Eric Sunshine
2016-05-30  9:56                         ` Duy Nguyen
2016-05-22 10:43                     ` [PATCH v2 2/5] worktree.c: add is_main_worktree() Nguyễn Thái Ngọc Duy
2016-05-22 10:43                     ` [PATCH v2 3/5] worktree.c: add is_worktree_locked() Nguyễn Thái Ngọc Duy
2016-05-22 10:43                     ` [PATCH v2 4/5] worktree: add "lock" command Nguyễn Thái Ngọc Duy
2016-05-23  4:36                       ` Eric Sunshine
2016-05-22 10:43                     ` [PATCH v2 5/5] worktree: add "unlock" command Nguyễn Thái Ngọc Duy
2016-05-23  4:39                       ` Eric Sunshine
2016-05-23  4:51                     ` [PATCH v2 0/5] worktree lock/unlock Eric Sunshine
2016-05-23  9:23                       ` Duy Nguyen
2016-05-30 10:49                     ` [PATCH v3 0/6] " Nguyễn Thái Ngọc Duy
2016-05-30 10:49                       ` [PATCH v3 1/6] worktree.c: add find_worktree() Nguyễn Thái Ngọc Duy
2016-05-30 10:49                       ` [PATCH v3 2/6] worktree.c: find_worktree() learns to identify worktrees by basename Nguyễn Thái Ngọc Duy
2016-05-31 17:51                         ` Junio C Hamano
2016-06-01 13:22                           ` Duy Nguyen
2016-06-01 18:44                             ` Junio C Hamano
2016-06-02  9:40                               ` Duy Nguyen
2016-06-02 16:49                                 ` Junio C Hamano
2016-06-03 11:11                                   ` Duy Nguyen
2016-06-03 15:30                                     ` Junio C Hamano
2016-06-05  7:15                                     ` Johannes Schindelin
2016-05-30 10:49                       ` [PATCH v3 3/6] worktree.c: add is_main_worktree() Nguyễn Thái Ngọc Duy
2016-05-31 17:52                         ` Junio C Hamano
2016-05-30 10:49                       ` [PATCH v3 4/6] worktree.c: retrieve lock status (and optionally reason) in get_worktrees() Nguyễn Thái Ngọc Duy
2016-05-31 17:55                         ` Junio C Hamano
2016-06-01 13:02                           ` Duy Nguyen
2016-06-01 15:23                             ` Junio C Hamano
2016-05-30 10:49                       ` [PATCH v3 5/6] worktree: add "lock" command Nguyễn Thái Ngọc Duy
2016-05-31 18:10                         ` Junio C Hamano
2016-05-31 18:28                         ` Junio C Hamano
2016-05-30 10:49                       ` [PATCH v3 6/6] worktree: add "unlock" command Nguyễn Thái Ngọc Duy
2016-05-31 18:12                         ` Junio C Hamano
2016-06-01 13:10                           ` Duy Nguyen
2016-05-31 18:31                         ` Junio C Hamano
2016-05-31 18:35                           ` Junio C Hamano
2016-06-03 12:19                       ` [PATCH v4 0/6] worktree lock/unlock Nguyễn Thái Ngọc Duy
2016-06-03 12:19                         ` [PATCH v4 1/6] worktree.c: add find_worktree() Nguyễn Thái Ngọc Duy
2016-06-03 15:00                           ` Ramsay Jones
2016-06-13 12:22                             ` Duy Nguyen
2016-06-03 12:19                         ` [PATCH v4 2/6] worktree.c: add is_main_worktree() Nguyễn Thái Ngọc Duy
2016-06-03 12:19                         ` [PATCH v4 3/6] worktree.c: add is_worktree_locked() Nguyễn Thái Ngọc Duy
2016-06-03 12:19                         ` [PATCH v4 4/6] worktree: add "lock" command Nguyễn Thái Ngọc Duy
2016-06-03 12:19                         ` [PATCH v4 5/6] worktree: add "unlock" command Nguyễn Thái Ngọc Duy
2016-06-03 12:19                         ` [PATCH v4 6/6] worktree.c: find_worktree() search by path suffix Nguyễn Thái Ngọc Duy
2016-06-04  5:14                         ` [PATCH v4 0/6] worktree lock/unlock Junio C Hamano
2016-06-13 12:18                         ` [PATCH v5 " Nguyễn Thái Ngọc Duy
2016-06-13 12:18                           ` [PATCH v5 1/6] worktree.c: add find_worktree() Nguyễn Thái Ngọc Duy
2016-06-13 12:18                           ` [PATCH v5 2/6] worktree.c: add is_main_worktree() Nguyễn Thái Ngọc Duy
2016-06-13 12:18                           ` [PATCH v5 3/6] worktree.c: add is_worktree_locked() Nguyễn Thái Ngọc Duy
2016-06-13 12:18                           ` [PATCH v5 4/6] worktree: add "lock" command Nguyễn Thái Ngọc Duy
2016-06-13 12:18                           ` [PATCH v5 5/6] worktree: add "unlock" command Nguyễn Thái Ngọc Duy
2016-06-13 12:18                           ` [PATCH v5 6/6] worktree.c: find_worktree() search by path suffix Nguyễn Thái Ngọc Duy
2016-06-27  9:57                         ` [PATCH v4 0/6] worktree lock/unlock Torsten Bögershausen
2016-06-30 16:01                           ` [PATCH] fixup! worktree: add "lock" command Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` [PATCH v3 06/13] path.c: refactor and add worktree_git_path() Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` [PATCH v3 07/13] wt-status.c: split rebase detection out of wt_status_get_state() Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` [PATCH v3 08/13] wt-status.c: make wt_status_check_rebase() work on any worktree Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` [PATCH v3 09/13] worktree.c: avoid referencing to worktrees[i] multiple times Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` Nguyễn Thái Ngọc Duy [this message]
2016-04-22 13:01           ` [PATCH v3 11/13] wt-status.c: split bisect detection out of wt_status_get_state() Nguyễn Thái Ngọc Duy
2016-04-22 13:01           ` [PATCH v3 12/13] worktree.c: check whether branch is bisected in another worktree Nguyễn Thái Ngọc Duy
2016-05-11  5:45             ` Eric Sunshine
2016-04-22 13:01           ` [PATCH v3 13/13] branch: do not rename a branch under bisect or rebase Nguyễn Thái Ngọc Duy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1461330096-21783-11-git-send-email-pclouds@gmail.com \
    --to=pclouds@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=rappazzo@gmail.com \
    --cc=rethab.ch@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).