From: Johannes Schindelin <johannes.schindelin@gmx.de>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Michael Rappazzo" <rappazzo@gmail.com>
Subject: [PATCH v3 0/2] Fix bugs in rev-parse's output when run in a subdirectory
Date: Fri, 17 Feb 2017 17:58:53 +0100 (CET) [thread overview]
Message-ID: <cover.1487350582.git.johannes.schindelin@gmx.de> (raw)
In-Reply-To: <cover.1486740772.git.johannes.schindelin@gmx.de>
The bug that bit me (hard!) and that triggered not only a long series of
curses but also my writing a patch and sending it to the list was that
`git rev-parse --git-path HEAD` would give *incorrect* output when run
in a subdirectory of a regular checkout, but *correct* output when run
in a subdirectory of an associated *worktree*.
I had tested the script in question quite a bit, but in a worktree. And
in production, it quietly did exactly the wrong thing.
Changes relative to v2:
- the "iffy" test in t1700 was made "uniffy"
- clarified in the commit message of 2/2 why we can get away with the
"reset then use" pattern
Johannes Schindelin (1):
rev-parse: fix several options when running in a subdirectory
Michael Rappazzo (1):
rev-parse tests: add tests executed from a subdirectory
builtin/rev-parse.c | 15 +++++++++++----
t/t1500-rev-parse.sh | 28 ++++++++++++++++++++++++++++
t/t1700-split-index.sh | 16 ++++++++++++++++
t/t2027-worktree-list.sh | 10 +++++++++-
4 files changed, 64 insertions(+), 5 deletions(-)
base-commit: 076c05393a047247ea723896289b48d6549ed7d0
Published-As: https://github.com/dscho/git/releases/tag/git-path-in-subdir-v3
Fetch-It-Via: git fetch https://github.com/dscho/git git-path-in-subdir-v3
Interdiff vs v2:
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
index 84af2802f6f..2cfd8d2aae4 100644
--- a/builtin/rev-parse.c
+++ b/builtin/rev-parse.c
@@ -903,6 +903,7 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
continue;
verify_filename(prefix, arg, 1);
}
+ strbuf_release(&buf);
if (verify) {
if (revs_count == 1) {
show_rev(type, sha1, name);
@@ -912,6 +913,5 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
die_no_single_rev(quiet);
} else
show_default();
- strbuf_release(&buf);
return 0;
}
diff --git a/t/t1700-split-index.sh b/t/t1700-split-index.sh
index 446ff34f966..6096f2c6309 100755
--- a/t/t1700-split-index.sh
+++ b/t/t1700-split-index.sh
@@ -201,17 +201,16 @@ EOF
'
test_expect_success 'rev-parse --shared-index-path' '
- rm -rf .git &&
- test_create_repo . &&
- git update-index --split-index &&
- ls -t .git/sharedindex* | tail -n 1 >expect &&
- git rev-parse --shared-index-path >actual &&
- test_cmp expect actual &&
- mkdir work &&
- test_when_finished "rm -rf work" &&
+ test_create_repo split-index &&
(
- cd work &&
- ls -t ../.git/sharedindex* | tail -n 1 >expect &&
+ cd split-index &&
+ git update-index --split-index &&
+ echo .git/sharedindex* >expect &&
+ git rev-parse --shared-index-path >actual &&
+ test_cmp expect actual &&
+ mkdir subdirectory &&
+ cd subdirectory &&
+ echo ../.git/sharedindex* >expect &&
git rev-parse --shared-index-path >actual &&
test_cmp expect actual
)
--
2.11.1.windows.1.2.g87ad093.dirty
next prev parent reply other threads:[~2017-02-17 16:59 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-08 12:17 [PATCH] rev-parse --git-path: fix output when running in a subdirectory Johannes Schindelin
2017-02-08 18:47 ` Junio C Hamano
2017-02-09 21:05 ` Johannes Schindelin
2017-02-09 21:50 ` Junio C Hamano
2017-02-10 4:21 ` Jeff King
2017-02-09 9:48 ` Duy Nguyen
2017-02-09 13:46 ` Mike Rappazzo
2017-02-09 21:11 ` Johannes Schindelin
2017-02-09 21:33 ` Junio C Hamano
2017-02-09 22:11 ` Johannes Schindelin
2017-02-09 22:54 ` Junio C Hamano
2017-02-10 3:52 ` Mike Rappazzo
2017-02-10 15:44 ` Johannes Schindelin
2017-02-10 15:33 ` [PATCH v2 0/2] Fix bugs in rev-parse's output when run " Johannes Schindelin
2017-02-10 15:33 ` [PATCH v2 1/2] rev-parse tests: add tests executed from " Johannes Schindelin
2017-02-10 18:50 ` Junio C Hamano
2017-02-17 16:55 ` Johannes Schindelin
2017-02-10 20:25 ` Junio C Hamano
2017-02-17 16:57 ` Johannes Schindelin
2017-02-10 15:33 ` [PATCH v2 2/2] rev-parse: fix several options when running in " Johannes Schindelin
2017-02-10 18:57 ` Junio C Hamano
2017-02-17 16:53 ` Johannes Schindelin
2017-02-10 18:59 ` [PATCH v2 0/2] Fix bugs in rev-parse's output when run " Junio C Hamano
2017-02-17 16:58 ` Johannes Schindelin [this message]
2017-02-17 16:59 ` [PATCH v3 1/2] rev-parse tests: add tests executed from " Johannes Schindelin
2017-02-17 16:59 ` [PATCH v3 2/2] rev-parse: fix several options when running in " Johannes Schindelin
2017-02-17 18:25 ` [PATCH v3 0/2] Fix bugs in rev-parse's output when run " Junio C Hamano
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=cover.1487350582.git.johannes.schindelin@gmx.de \
--to=johannes.schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pclouds@gmail.com \
--cc=rappazzo@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).