git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Eric Sunshine <sunshine@sunshineco.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
	Duy Nguyen <pclouds@gmail.com>,
	Mark Levedahl <mlevedahl@gmail.com>,
	Mikael Magnusson <mikachu@gmail.com>,
	Eric Sunshine <sunshine@sunshineco.com>
Subject: [PATCH v2 23/23] checkout: retire --ignore-other-worktrees in favor of --force
Date: Fri,  3 Jul 2015 20:17:32 -0400	[thread overview]
Message-ID: <1435969052-540-24-git-send-email-sunshine@sunshineco.com> (raw)
In-Reply-To: <1435969052-540-1-git-send-email-sunshine@sunshineco.com>

As a safeguard, checking out a branch already checked out by a different
worktree is disallowed. This behavior can be overridden with
--ignore-other-worktrees, however, this option is neither obvious nor
particularly discoverable. As a common safeguard override, --force is
more likely to come to mind. Therefore, overload it to also suppress the
check for a branch already checked out elsewhere.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
---

I plopped this patch at the end of the series so that it can be dropped
easily if desired since Junio indicated[1] that he would "moderately
object" to this change.

[1]: http://thread.gmane.org/gmane.comp.version-control.git/273032/focus=273108

 Documentation/git-checkout.txt | 9 +++------
 builtin/checkout.c             | 8 +++-----
 builtin/worktree.c             | 2 +-
 3 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt
index 77b7141..41148ce 100644
--- a/Documentation/git-checkout.txt
+++ b/Documentation/git-checkout.txt
@@ -111,6 +111,9 @@ OPTIONS
 +
 When checking out paths from the index, do not fail upon unmerged
 entries; instead, unmerged entries are ignored.
++
+By default, checking out a branch already checked out in another worktree
+is disallowed. This overrides that safeguard.
 
 --ours::
 --theirs::
@@ -232,12 +235,6 @@ section of linkgit:git-add[1] to learn how to operate the `--patch` mode.
 	specific files such as HEAD, index, etc. See
 	linkgit:git-worktree[1] for a description of linked worktrees.
 
---ignore-other-worktrees::
-	`git checkout` refuses when the wanted ref is already checked
-	out by another worktree. This option makes it check the ref
-	out anyway. In other words, the ref can be held by more than one
-	worktree.
-
 <branch>::
 	Branch to checkout; if it refers to a branch (i.e., a name that,
 	when prepended with "refs/heads/", is a valid ref), then that
diff --git a/builtin/checkout.c b/builtin/checkout.c
index 5754554..01c7c30 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -35,7 +35,6 @@ struct checkout_opts {
 	int writeout_stage;
 	int overwrite_ignore;
 	int ignore_skipworktree;
-	int ignore_other_worktrees;
 
 	const char *new_branch;
 	const char *new_branch_force;
@@ -903,7 +902,8 @@ static void check_linked_checkout(struct branch_info *new, const char *id)
 		strbuf_rtrim(&gitdir);
 	} else
 		strbuf_addstr(&gitdir, get_git_common_dir());
-	die(_("'%s' is already checked out at '%s'"), new->name, gitdir.buf);
+	die(_("'%s' is already checked out at '%s'; use --force to override"),
+	    new->name, gitdir.buf);
 done:
 	strbuf_release(&path);
 	strbuf_release(&sb);
@@ -1151,7 +1151,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)) &&
-		    !opts->ignore_other_worktrees)
+		    !opts->force)
 			check_linked_checkouts(new);
 		free(head_ref);
 	}
@@ -1198,8 +1198,6 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
 			 N_("do not limit pathspecs to sparse entries only")),
 		OPT_HIDDEN_BOOL(0, "guess", &dwim_new_local_branch,
 				N_("second guess 'git checkout no-such-branch'")),
-		OPT_BOOL(0, "ignore-other-worktrees", &opts.ignore_other_worktrees,
-			 N_("do not check if another worktree is holding the given ref")),
 		OPT_END(),
 	};
 
diff --git a/builtin/worktree.c b/builtin/worktree.c
index c8c6fa7..8a6c7fa 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -298,7 +298,7 @@ static int add(int ac, const char **av, const char *prefix)
 
 	argv_array_push(&cmd, "checkout");
 	if (force)
-		argv_array_push(&cmd, "--ignore-other-worktrees");
+		argv_array_push(&cmd, "--force");
 	if (new_branch)
 		argv_array_pushl(&cmd, "-b", new_branch, NULL);
 	if (new_branch_force)
-- 
2.5.0.rc1.197.g417e668

      parent reply	other threads:[~2015-07-04  0:19 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-04  0:17 [PATCH v2 00/23] replace "checkout --to" with "worktree add" Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 01/23] Documentation/git-checkout: fix incorrect worktree prune command Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 02/23] Documentation/git-worktree: associate options with commands Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 03/23] Documentation: move linked worktree description from checkout to worktree Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 04/23] Documentation/git-worktree: add BUGS section Eric Sunshine
2015-07-04  2:41   ` Duy Nguyen
2015-07-04  8:48     ` Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 05/23] Documentation/git-worktree: split technical info from general description Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 06/23] Documentation/git-worktree: add high-level 'lock' overview Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 07/23] Documentation/git-worktree: add EXAMPLES section Eric Sunshine
2015-07-04  2:23   ` Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 08/23] checkout: fix bug with --to and relative HEAD Eric Sunshine
2015-07-04  2:45   ` Duy Nguyen
2015-07-04  8:49     ` Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 09/23] checkout: relocate --to's "no branch specified" check Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 10/23] checkout: prepare_linked_checkout: drop now-unused 'new' argument Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 11/23] checkout: make --to unconditionally verbose Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 12/23] checkout: drop 'checkout_opts' dependency from prepare_linked_checkout Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 13/23] worktree: introduce "add" command Eric Sunshine
2015-07-04  2:53   ` Duy Nguyen
2015-07-04  8:54     ` Eric Sunshine
2015-07-06  9:24       ` Duy Nguyen
2015-07-04  0:17 ` [PATCH v2 14/23] worktree: add --force option Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 15/23] worktree: add --detach option Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 16/23] worktree: add -b/-B options Eric Sunshine
2015-07-04  3:19   ` Duy Nguyen
2015-07-04  8:57     ` Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 17/23] tests: worktree: retrofit "checkout --to" tests for "worktree add" Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 18/23] checkout: retire --to option Eric Sunshine
2015-07-04  3:04   ` Duy Nguyen
2015-07-04  8:59     ` Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 19/23] checkout: require worktree unconditionally Eric Sunshine
2015-07-04  2:33   ` Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 20/23] worktree: extract basename computation to new function Eric Sunshine
2015-07-04  0:17 ` [PATCH v2 21/23] worktree: add: make -b/-B default to HEAD when <branch> is omitted Eric Sunshine
2015-07-06 19:14   ` Junio C Hamano
2015-07-04  0:17 ` [PATCH v2 22/23] worktree: add: auto-vivify new branch " Eric Sunshine
2015-07-04  0:17 ` Eric Sunshine [this message]

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=1435969052-540-24-git-send-email-sunshine@sunshineco.com \
    --to=sunshine@sunshineco.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=mikachu@gmail.com \
    --cc=mlevedahl@gmail.com \
    --cc=pclouds@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).