git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 22/23] worktree: add: auto-vivify new branch when <branch> is omitted

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Jul 7, 2015, 01:33 UTC
Message-ID
<20150707013301.GA26523@flurp.local>
In-Reply-To
<xmqqpp45ytzh.fsf@gitster.dls.corp.google.com>
On Mon, Jul 06, 2015 at 12:19:14PM -0700, Junio C Hamano wrote:
Show 13 quoted lines
> Eric Sunshine <sunshine@sunshineco.com> writes:
> > diff --git a/Documentation/git-worktree.txt b/Documentation/git-worktree.txt
> > index 377ae0f..da71f50 100644
> > --- a/Documentation/git-worktree.txt
> > +++ b/Documentation/git-worktree.txt
> > @@ -9,7 +9,7 @@ git-worktree - Manage multiple worktrees
> >  SYNOPSIS
> >  --------
> >  [verse]
> > -'git worktree add' [-f] [--detach] [-b <new-branch>] <path> <branch>
> > +'git worktree add' [-f] [--detach] [-b <new-branch>] <path> [<branch>]
> 
> Ahh, OK, this answers my previous question.

Right. I considered squashing this patch with the previous one, in which case the synopsis question wouldn't have come up, but kept them separate since they are (or can be) conceptually distinct, and the one patch builds upon the other (and keeping them separate makes them a bit easier to review).

Show 16 quoted lines
> > +	if (ac < 2 && !new_branch && !new_branch_force) {
> > +		int n;
> > +		const char *s = worktree_basename(path, &n);
> > +		new_branch = xstrndup(s, n);
> > +	}
> > +
> 
> and because this is new_branch, not new_branch_force, we will not
> accidentally clobber an existing branch.  The "hotfix" time is when
> the end-user tends to be less careful, and it is a good thing to
> make sure "git worktree add ../hotfix" will not clobber an unrelated
> "hotfix" branch.
> 
> Good.
> 
> Which may be something we would want to have a test for, though.
Good idea. How about the following as a squash-in?
--- 8< ---
From: Eric Sunshine <sunshine@sunshineco.com>
Subject: [PATCH] fixup! worktree: add: auto-vivify new branch when <branch> is omitted
---
 t/t2025-worktree-add.sh | 9 +++++++++
 1 file changed, 9 insertions(+)
diff --git a/t/t2025-worktree-add.sh b/t/t2025-worktree-add.sh
index 8fe242f..ead8aa2 100755
--- a/t/t2025-worktree-add.sh
+++ b/t/t2025-worktree-add.sh
@@ -150,4 +150,13 @@ test_expect_success '"add" with <branch> omitted' '
 	test_cmp_rev HEAD bat
 '
 
+test_expect_success '"add" auto-vivify does not clobber existing branch' '
+	test_commit c1 &&
+	test_commit c2 &&
+	git branch precious HEAD~1 &&
+	test_must_fail git worktree add precious &&
+	test_cmp_rev HEAD~1 precious &&
+	test_path_is_missing precious
+'
+
 test_done
-- 
2.5.0.rc1.201.ga12d9f8
Previous: Junio C HamanoNext: Junio C Hamano
Message 28 of 36 in “replace "checkout --to" with "worktree add"”
  1. 00/23 replace "checkout --to" with "worktree add"Eric Sunshine, Jul 6, 2015
  2. 01/23 Documentation/git-checkout: fix incorrect worktree prune commandEric Sunshine, Jul 6, 2015
  3. 02/23 Documentation/git-worktree: associate options with commandsEric Sunshine, Jul 6, 2015
  4. 03/23 Documentation: move linked worktree description from checkout to worktreeEric Sunshine, Jul 6, 2015
  5. 04/23 Documentation/git-worktree: add BUGS sectionEric Sunshine, Jul 6, 2015
  6. 05/23 Documentation/git-worktree: split technical info from general descriptionEric Sunshine, Jul 6, 2015
  7. 06/23 Documentation/git-worktree: add high-level 'lock' overviewEric Sunshine, Jul 6, 2015
  8. 07/23 Documentation/git-worktree: add EXAMPLES sectionEric Sunshine, Jul 6, 2015
  9. 08/23 checkout: fix bug with --to and relative HEADEric Sunshine, Jul 6, 2015
  10. 09/23 checkout: relocate --to's "no branch specified" checkEric Sunshine, Jul 6, 2015
  11. 10/23 checkout: prepare_linked_checkout: drop now-unused 'new' argumentEric Sunshine, Jul 6, 2015
  12. 11/23 checkout: make --to unconditionally verboseEric Sunshine, Jul 6, 2015
  13. 12/23 checkout: drop 'checkout_opts' dependency from prepare_linked_checkoutEric Sunshine, Jul 6, 2015
  14. 13/23 worktree: introduce "add" commandEric Sunshine, Jul 6, 2015
  15. 14/23 worktree: add --force optionEric Sunshine, Jul 6, 2015
  16. 15/23 worktree: add --detach optionEric Sunshine, Jul 6, 2015
  17. 16/23 worktree: add -b/-B optionsEric Sunshine, Jul 6, 2015
  18. 17/23 tests: worktree: retrofit "checkout --to" tests for "worktree add"Eric Sunshine, Jul 6, 2015
  19. 18/23 checkout: retire --to optionEric Sunshine, Jul 6, 2015
  20. Junio C HamanoJul 6, 2015
  21. Eric SunshineJul 7, 2015
  22. Junio C HamanoJul 8, 2015
  23. 19/23 checkout: require worktree unconditionallyEric Sunshine, Jul 6, 2015
  24. 20/23 worktree: extract basename computation to new functionEric Sunshine, Jul 6, 2015
  25. 21/23 worktree: add: make -b/-B default to HEAD when <branch> is omittedEric Sunshine, Jul 6, 2015
  26. 22/23 worktree: add: auto-vivify new branch when <branch> is omittedEric Sunshine, Jul 6, 2015
  27. Junio C HamanoJul 6, 2015
  28. Eric SunshineJul 7, 2015
  29. Junio C HamanoJul 7, 2015
  30. 23/23 checkout: retire --ignore-other-worktrees in favor of --forceEric Sunshine, Jul 6, 2015
  31. Junio C HamanoJul 6, 2015
  32. Eric SunshineJul 7, 2015
  33. Eric SunshineJul 7, 2015
  34. Junio C HamanoJul 7, 2015
  35. Eric SunshineJul 7, 2015
  36. Mark LevedahlJul 8, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.