[PATCH/RFC v3 00/14] Introduce new commands switch-branch and restore-files
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Nov 29, 2018, 21:58 UTC
- Message-ID
- <20181129215850.7278-1-pclouds@gmail.com>
- In-Reply-To
- <20181127165211.24763-1-pclouds@gmail.com>
v3 sees switch-branch go back to switch-branch (in v2 it was checkout-branch). checkout-files is also renamed restore-files (v1 was restore-paths). Hopefully we won't see another rename.
I'll try to summarize the differences between the new commands and 'git checkout' down here, but you're welcome to just head to 07/14 and read the new man pages.
'git switch-branch'
- does not "do nothing", you have to either switch branch, create a new branch, or detach. "git switch-branch" with no arguments is rejected.
- implicit detaching is rejected. If you need to detach, you need to give --detach. Or stick to 'git checkout'.
- -b/-B is renamed to -c/-C with long option names
- of course does not accept pathspec
'git restore-files'
- takes a ref from --from argument, not as a free ref. As a result, '--' is no longer needed. All non-option arguments are pathspec
- pathspec is mandatory, you can't do "git restore-files" without any pathspec.
- I just remember -p which is allowed to take no pathspec :( I'll fix it later.
- Two more fancy features (the "git checkout --index" being the default mode and the backup log for accidental overwrites) are of course still missing. But they are coming.
I did not go replace "detached HEAD" with "unnamed branch" (or "no branch") everywhere because I think a unique term is still good to refer to this concept. Or maybe "no branch" is good enough. I dunno.
Nguyễn Thái Ngọc Duy (14): git-checkout.txt: fix one syntax line git-checkout.txt: split detached head section out checkout: factor out some code in parse_branchname_arg() checkout: make "opts" in cmd_checkout() a pointer checkout: move 'confict_style' and 'dwim_..' to checkout_opts checkout: split options[] array in three pieces checkout: split into switch-branch and restore-files switch-branch: better names for -b and -B switch-branch: stop accepting pathspec switch-branch: reject "do nothing" case switch-branch: only allow explicit detached HEAD restore-files: take tree-ish from --from option instead restore-files: make pathspec mandatory doc: promote "git switch-branch" and "git restore-files"
.gitignore | 2 + Documentation/config/advice.txt | 10 +- Documentation/config/checkout.txt | 5 +- Documentation/detach-head.txt | 132 +++++++++ Documentation/git-branch.txt | 8 +- Documentation/git-check-ref-format.txt | 2 +- Documentation/git-checkout.txt | 140 +-------- Documentation/git-format-patch.txt | 2 +- Documentation/git-merge-base.txt | 2 +- Documentation/git-rebase.txt | 2 +- Documentation/git-remote.txt | 2 +- Documentation/git-rerere.txt | 10 +- Documentation/git-reset.txt | 18 +- Documentation/git-restore-files.txt | 167 +++++++++++ Documentation/git-revert.txt | 2 +- Documentation/git-stash.txt | 6 +- Documentation/git-switch-branch.txt | 289 +++++++++++++++++++ Documentation/gitattributes.txt | 2 +- Documentation/gitcli.txt | 4 +- Documentation/gitcore-tutorial.txt | 18 +- Documentation/giteveryday.txt | 24 +- Documentation/githooks.txt | 5 +- Documentation/gittutorial-2.txt | 2 +- Documentation/gittutorial.txt | 4 +- Documentation/revisions.txt | 2 +- Documentation/user-manual.txt | 54 ++-- Makefile | 2 + advice.c | 11 +- builtin.h | 2 + builtin/checkout.c | 380 ++++++++++++++++++------- command-list.txt | 4 +- git.c | 2 + parse-options-cb.c | 16 ++ parse-options.h | 3 +- sha1-name.c | 2 +- wt-status.c | 2 +- 36 files changed, 1006 insertions(+), 332 deletions(-) create mode 100644 Documentation/detach-head.txt create mode 100644 Documentation/git-restore-files.txt create mode 100644 Documentation/git-switch-branch.txt
-- 2.20.0.rc1.380.g3eb999425c.dirty