From: Stefan Beller <sbeller@google.com>
To: git@vger.kernel.org, gitster@pobox.com
Cc: Stefan Beller <sbeller@google.com>
Subject: [PATCHv4 0/7] describe a blob
Date: Tue, 14 Nov 2017 16:30:36 -0800 [thread overview]
Message-ID: <20171115003043.24080-1-sbeller@google.com> (raw)
* omitted the check for options, none of them made sense.
* use of --reverse
* an additional test asked for by Jonathan
previous discussion
https://public-inbox.org/git/20171102194148.2124-1-sbeller@google.com/
interdiff to current queued patches below.
Thanks,
Stefan
Stefan Beller (7):
t6120: fix typo in test name
list-objects.c: factor out traverse_trees_and_blobs
revision.h: introduce blob/tree walking in order of the commits
builtin/describe.c: rename `oid` to avoid variable shadowing
builtin/describe.c: print debug statements earlier
builtin/describe.c: factor out describe_commit
builtin/describe.c: describe a blob
Documentation/git-describe.txt | 13 +++-
Documentation/rev-list-options.txt | 5 ++
builtin/describe.c | 126 ++++++++++++++++++++++++++++---------
list-objects.c | 52 +++++++++------
revision.c | 2 +
revision.h | 3 +-
t/t6100-rev-list-in-order.sh | 77 +++++++++++++++++++++++
t/t6120-describe.sh | 21 ++++++-
8 files changed, 249 insertions(+), 50 deletions(-)
create mode 100755 t/t6100-rev-list-in-order.sh
--
2.15.0.128.gcadd42da22
diff --git c/builtin/describe.c w/builtin/describe.c
index acfd853a30..a2a5fdc48d 100644
--- c/builtin/describe.c
+++ w/builtin/describe.c
@@ -473,6 +473,7 @@ static void describe_blob(struct object_id oid, struct strbuf *dst)
"--single-worktree",
"--objects",
"--in-commit-order",
+ "--reverse",
NULL);
init_revisions(&revs, NULL);
@@ -501,13 +502,9 @@ static void describe(const char *arg, int last_one)
if (cmit)
describe_commit(&oid, &sb);
- else if (lookup_blob(&oid)) {
- if (all || tags || longformat || first_parent ||
- patterns.nr || exclude_patterns.nr ||
- always || dirty || broken)
- die(_("options not available for describing blobs"));
+ else if (lookup_blob(&oid))
describe_blob(oid, &sb);
- } else
+ else
die(_("%s is neither a commit nor blob"), arg);
puts(sb.buf);
diff --git c/t/t6100-rev-list-in-order.sh w/t/t6100-rev-list-in-order.sh
index d4d539b0da..b2bb0a7f61 100755
--- c/t/t6100-rev-list-in-order.sh
+++ w/t/t6100-rev-list-in-order.sh
@@ -4,7 +4,7 @@ test_description='rev-list testing in-commit-order'
. ./test-lib.sh
-test_expect_success 'rev-list --in-commit-order' '
+test_expect_success 'setup a commit history with trees, blobs' '
for x in one two three four
do
echo $x >$x &&
@@ -17,7 +17,10 @@ test_expect_success 'rev-list --in-commit-order' '
git rm $x &&
git commit -m "remove $x" ||
return 1
- done &&
+ done
+'
+
+test_expect_success 'rev-list --in-commit-order' '
git rev-list --in-commit-order --objects HEAD >actual.raw &&
cut -c 1-40 >actual <actual.raw &&
@@ -44,4 +47,31 @@ test_expect_success 'rev-list --in-commit-order' '
test_cmp expect actual
'
+test_expect_success 'rev-list lists blobs and trees after commits' '
+ git rev-list --objects HEAD >actual.raw &&
+ cut -c 1-40 >actual <actual.raw &&
+
+ git cat-file --batch-check="%(objectname)" >expect.raw <<-\EOF &&
+ HEAD^{commit}
+ HEAD~1^{commit}
+ HEAD~2^{commit}
+ HEAD~3^{commit}
+ HEAD~4^{commit}
+ HEAD~5^{commit}
+ HEAD^{tree}
+ HEAD^{tree}:one
+ HEAD^{tree}:two
+ HEAD~1^{tree}
+ HEAD~1^{tree}:three
+ HEAD~2^{tree}
+ HEAD~2^{tree}:four
+ # HEAD~3^{tree} skipped, same as HEAD~1^{tree}
+ # HEAD~4^{tree} skipped, same as HEAD^{tree}
+ HEAD~5^{tree}
+ EOF
+ grep -v "#" >expect <expect.raw &&
+
+ test_cmp expect actual
+'
+
test_done
diff --git c/t/t6120-describe.sh w/t/t6120-describe.sh
index aec6ed192d..ec4f25d009 100755
--- c/t/t6120-describe.sh
+++ w/t/t6120-describe.sh
@@ -319,10 +319,14 @@ test_expect_success 'describe a blob at a tag' '
test_cmp expect actual
'
-test_expect_success 'describe a blob with commit-ish' '
+test_expect_success 'describe a blob with its last introduction' '
+ git commit --allow-empty -m "empty commit" &&
+ git rm file &&
+ git commit -m "delete blob" &&
+ git revert HEAD &&
git commit --allow-empty -m "empty commit" &&
git describe HEAD:file >actual &&
- grep unique-file-1-g actual
+ grep unique-file-3-g actual
'
test_expect_failure ULIMIT_STACK_SIZE 'name-rev works in a deep repo' '
next reply other threads:[~2017-11-15 0:31 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-15 0:30 Stefan Beller [this message]
2017-11-15 0:30 ` [PATCHv4 1/7] t6120: fix typo in test name Stefan Beller
2017-11-15 0:30 ` [PATCHv4 2/7] list-objects.c: factor out traverse_trees_and_blobs Stefan Beller
2017-11-15 0:30 ` [PATCHv4 3/7] revision.h: introduce blob/tree walking in order of the commits Stefan Beller
2017-11-15 1:38 ` Jonathan Tan
2017-11-15 0:30 ` [PATCHv4 4/7] builtin/describe.c: rename `oid` to avoid variable shadowing Stefan Beller
2017-11-15 0:30 ` [PATCHv4 5/7] builtin/describe.c: print debug statements earlier Stefan Beller
2017-11-15 1:41 ` Jonathan Tan
2017-11-15 0:30 ` [PATCHv4 6/7] builtin/describe.c: factor out describe_commit Stefan Beller
2017-11-15 1:44 ` Jonathan Tan
2017-11-15 0:30 ` [PATCHv4 7/7] builtin/describe.c: describe a blob Stefan Beller
2017-11-15 1:52 ` Jonathan Tan
2017-11-16 1:22 ` Stefan Beller
2017-11-16 1:43 ` Junio C Hamano
2017-11-16 1:49 ` Stefan Beller
2017-11-16 2:04 ` Junio C Hamano
2017-11-17 1:06 ` 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=20171115003043.24080-1-sbeller@google.com \
--to=sbeller@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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).