From: Denton Liu <firstname.lastname@example.org>
To: Git Mailing List <email@example.com>
Subject: [PATCH v2 0/4] checkout/restore: fix `git checkout -p HEAD...` bug
Date: Wed, 7 Oct 2020 00:56:14 -0700 [thread overview]
Message-ID: <firstname.lastname@example.org> (raw)
As reported earlier, `git checkout -p HEAD...` results in the following error:
$ git checkout -p HEAD...
usage: git diff-index [-m] [--cached] [<common-diff-options>] <tree-ish> [<path>...]
common diff options:
-z output diff-raw with lines terminated with NUL.
-p output patch format.
-u synonym for -p.
output both a patch and the diff-raw format.
--stat show diffstat instead of patch.
--numstat show numeric diffstat instead of patch.
output a patch and prepend its diffstat.
--name-only show only names of changed files.
--name-status show names and status of changed files.
--full-index show full object name on index lines.
--abbrev=<n> abbreviate object names in diff-tree header and diff-raw.
-R swap input file pairs.
-B detect complete rewrites.
-M detect renames.
-C detect copies.
try unchanged files as candidate for copy detection.
-l<n> limit rename attempts up to <n> paths.
-O<file> reorder diffs according to the <file>.
-S<string> find filepair whose only one side contains the string.
show all files diff when -S is used and hit is found.
-a --text treat all files as text.
Cannot close git diff-index --cached --numstat --summary HEAD... -- () at <redacted>/libexec/git-core/git-add--interactive line 183.
Since it was decided that <tree-ish> should also officially support the
merge-base revs, fix `git checkout -p <rev>...` and officially document the
Changes since v1:
* Add two NEEDSWORK commits
* Be more precise in the inline code comment
Denton Liu (4):
builtin/checkout: fix `git checkout -p HEAD...` bug
Doc: document "A...B" form for <tree-ish> in checkout and switch
add-patch: add NEEDSWORK about comparing commits
t2016: add a NEEDSWORK about the PERL prerequisite
Documentation/git-checkout.txt | 4 ++++
Documentation/git-restore.txt | 4 ++++
add-patch.c | 8 ++++++++
builtin/checkout.c | 15 ++++++++++++++-
git-add--interactive.perl | 7 +++++++
t/t2016-checkout-patch.sh | 11 +++++++++++
t/t2071-restore-patch.sh | 8 ++++++++
7 files changed, 56 insertions(+), 1 deletion(-)
Range-diff against v1:
1: 54f221411f ! 1: 723d74febe builtin/checkout: fix `git checkout -p HEAD...` bug
@@ builtin/checkout.c: static int checkout_paths(const struct checkout_opts *opts,
+ char rev_oid[GIT_MAX_HEXSZ + 1];
-+ * Since rev can be in the form of `<a>...<b>`, we must replace
-+ * the name with the hex of the commit for the
-+ * run_add_interactive() machinery to work properly. However,
-+ * there is special logic for the HEAD case so we mustn't
-+ * replace that.
++ * Since rev can be in the form of `<a>...<b>` (which is not
++ * recognized by diff-index), we will always replace the name
++ * with the hex of the commit (whether it's in `...` form or
++ * not) for the run_add_interactive() machinery to work
++ * properly. However, there is special logic for the HEAD case
++ * so we mustn't replace that.
+ if (rev && strcmp(rev, "HEAD"))
+ rev = oid_to_hex_r(rev_oid, &new_branch_info->commit->object.oid);
2: 75920c1a25 = 2: a0ed2f313d Doc: document "A...B" form for <tree-ish> in checkout and switch
-: ---------- > 3: 44ee78450e add-patch: add NEEDSWORK about comparing commits
-: ---------- > 4: a20544f18a t2016: add a NEEDSWORK about the PERL prerequisite
next prev parent reply other threads:[~2020-10-07 7:56 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-04 12:30 [PATCH 0/2] " Denton Liu
2020-10-04 12:30 ` [PATCH 1/2] builtin/checkout: " Denton Liu
2020-10-04 18:02 ` Junio C Hamano
2020-10-04 12:30 ` [PATCH 2/2] Doc: document "A...B" form for <tree-ish> in checkout and switch Denton Liu
2020-10-07 7:56 ` Denton Liu [this message]
2020-10-07 7:56 ` [PATCH v2 1/4] builtin/checkout: fix `git checkout -p HEAD...` bug Denton Liu
2020-10-07 7:56 ` [PATCH v2 2/4] Doc: document "A...B" form for <tree-ish> in checkout and switch Denton Liu
2020-10-07 7:56 ` [PATCH v2 3/4] add-patch: add NEEDSWORK about comparing commits Denton Liu
2020-10-07 7:56 ` [PATCH v2 4/4] t2016: add a NEEDSWORK about the PERL prerequisite Denton Liu
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:
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 \
* 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 inbox:
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).