From: Stefan Beller <sbeller@google.com>
To: sbeller@google.com
Cc: git@vger.kernel.org, me@ikke.info, jacob.keller@gmail.com,
Johannes.Schindelin@gmx.de
Subject: [PATCH 2/7] revision.h: introduce blob/tree walking in order of the commits
Date: Mon, 30 Oct 2017 17:33:46 -0700 [thread overview]
Message-ID: <20171031003351.22341-3-sbeller@google.com> (raw)
In-Reply-To: <20171031003351.22341-1-sbeller@google.com>
The functionality to list tree objects in the order they were seen
while traversing the commits will be used in the next commit,
where we teach `git describe` to describe not only commits, but
trees and blobs, too.
Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Stefan Beller <sbeller@google.com>
---
list-objects.c | 2 ++
revision.c | 2 ++
revision.h | 3 ++-
t/t6100-rev-list-in-order.sh | 44 ++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 50 insertions(+), 1 deletion(-)
create mode 100755 t/t6100-rev-list-in-order.sh
diff --git a/list-objects.c b/list-objects.c
index bf46f80dff..5e114c9a8a 100644
--- a/list-objects.c
+++ b/list-objects.c
@@ -237,6 +237,8 @@ void traverse_commit_list(struct rev_info *revs,
if (commit->tree)
add_pending_tree(revs, commit->tree);
show_commit(commit, data);
+ if (revs->tree_blobs_in_commit_order)
+ traverse_trees_and_blobs(revs, &base_path, show_object, data);
}
traverse_trees_and_blobs(revs, &base_path, show_object, data);
diff --git a/revision.c b/revision.c
index d167223e69..9329d4ebbf 100644
--- a/revision.c
+++ b/revision.c
@@ -1845,6 +1845,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
revs->dense = 0;
} else if (!strcmp(arg, "--show-all")) {
revs->show_all = 1;
+ } else if (!strcmp(arg, "--in-commit-order")) {
+ revs->tree_blobs_in_commit_order = 1;
} else if (!strcmp(arg, "--remove-empty")) {
revs->remove_empty_trees = 1;
} else if (!strcmp(arg, "--merges")) {
diff --git a/revision.h b/revision.h
index 54761200ad..86985d68aa 100644
--- a/revision.h
+++ b/revision.h
@@ -121,7 +121,8 @@ struct rev_info {
bisect:1,
ancestry_path:1,
first_parent_only:1,
- line_level_traverse:1;
+ line_level_traverse:1,
+ tree_blobs_in_commit_order:1;
/* Diff flags */
unsigned int diff:1,
diff --git a/t/t6100-rev-list-in-order.sh b/t/t6100-rev-list-in-order.sh
new file mode 100755
index 0000000000..67ebe815d2
--- /dev/null
+++ b/t/t6100-rev-list-in-order.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+test_description='miscellaneous rev-list tests'
+
+. ./test-lib.sh
+
+
+test_expect_success 'setup' '
+ for x in one two three four
+ do
+ echo $x >$x &&
+ git add $x &&
+ git commit -m "add file $x"
+ done &&
+ for x in four three
+ do
+ git rm $x
+ git commit -m "remove $x"
+ done &&
+ git rev-list --in-commit-order --objects HEAD >actual.raw &&
+ cut -c 1-40 > actual < actual.raw &&
+
+ >expect &&
+ git rev-parse HEAD^{commit} >>expect &&
+ git rev-parse HEAD^{tree} >>expect &&
+ git rev-parse HEAD^{tree}:one >>expect &&
+ git rev-parse HEAD^{tree}:two >>expect &&
+ git rev-parse HEAD~1^{commit} >>expect &&
+ git rev-parse HEAD~1^{tree} >>expect &&
+ git rev-parse HEAD~1^{tree}:three >>expect &&
+ git rev-parse HEAD~2^{commit} >>expect &&
+ git rev-parse HEAD~2^{tree} >>expect &&
+ git rev-parse HEAD~2^{tree}:four >>expect &&
+ git rev-parse HEAD~3^{commit} >>expect &&
+ # skip HEAD~3^{tree}
+ git rev-parse HEAD~4^{commit} >>expect &&
+ # skip HEAD~4^{tree}
+ git rev-parse HEAD~5^{commit} >>expect &&
+ git rev-parse HEAD~5^{tree} >>expect &&
+
+ test_cmp expect actual
+'
+
+test_done
--
2.15.0.rc2.443.gfcc3b81c0a
next prev parent reply other threads:[~2017-10-31 0:34 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-28 0:44 [RFC PATCH 0/3] git-describe <blob> ? Stefan Beller
2017-10-28 0:45 ` [PATCH 1/3] list-objects.c: factor out traverse_trees_and_blobs Stefan Beller
2017-10-28 0:45 ` [PATCH 2/3] revision.h: introduce blob/tree walking in order of the commits Stefan Beller
2017-10-28 17:20 ` Johannes Schindelin
2017-10-29 3:22 ` Stefan Beller
2017-10-29 3:23 ` Stefan Beller
2017-10-29 3:43 ` Junio C Hamano
2017-10-28 0:45 ` [PATCH 3/3] builtin/describe: describe blobs Stefan Beller
2017-10-28 17:32 ` Johannes Schindelin
2017-10-28 22:47 ` Jacob Keller
2017-10-29 3:28 ` Stefan Beller
2017-10-29 12:02 ` Kevin Daudt
2017-10-29 12:07 ` Johannes Schindelin
2017-10-28 17:15 ` [PATCH 1/3] list-objects.c: factor out traverse_trees_and_blobs Johannes Schindelin
2017-10-29 3:13 ` Stefan Beller
2017-10-28 16:04 ` [RFC PATCH 0/3] git-describe <blob> ? Johannes Schindelin
2017-10-31 0:33 ` [PATCH 0/7] git-describe <blob> Stefan Beller
2017-10-31 0:33 ` [PATCH 1/7] list-objects.c: factor out traverse_trees_and_blobs Stefan Beller
2017-10-31 6:07 ` Junio C Hamano
2017-10-31 0:33 ` Stefan Beller [this message]
2017-10-31 6:57 ` [PATCH 2/7] revision.h: introduce blob/tree walking in order of the commits Junio C Hamano
2017-10-31 18:12 ` Stefan Beller
2017-10-31 0:33 ` [PATCH 3/7] builtin/describe.c: rename `oid` to avoid variable shadowing Stefan Beller
2017-10-31 8:15 ` Jacob Keller
2017-10-31 0:33 ` [PATCH 4/7] builtin/describe.c: print debug statements earlier Stefan Beller
2017-10-31 7:03 ` Junio C Hamano
2017-10-31 19:05 ` Stefan Beller
2017-10-31 0:33 ` [PATCH 5/7] builtin/describe.c: factor out describe_commit Stefan Beller
2017-10-31 0:33 ` [PATCH 6/7] builtin/describe.c: describe a blob Stefan Beller
2017-10-31 6:25 ` Junio C Hamano
2017-10-31 19:16 ` Stefan Beller
2017-11-01 3:34 ` Junio C Hamano
2017-11-01 20:58 ` Stefan Beller
2017-11-02 1:53 ` Junio C Hamano
2017-11-02 4:23 ` Junio C Hamano
2017-11-04 21:15 ` Philip Oakley
2017-11-05 6:28 ` Junio C Hamano
2017-11-06 23:50 ` Philip Oakley
2017-11-09 20:30 ` Stefan Beller
2017-11-10 0:25 ` Philip Oakley
2017-11-10 1:24 ` Junio C Hamano
2017-11-10 22:44 ` [PATCH 0/1] describe a blob: with better docs Stefan Beller
2017-11-10 22:44 ` [PATCH] builtin/describe.c: describe a blob Stefan Beller
2017-11-13 1:33 ` Junio C Hamano
2017-11-14 23:37 ` Stefan Beller
2017-11-20 15:22 ` [PATCH 6/7] " Philip Oakley
2017-11-20 18:18 ` Philip Oakley
2017-11-01 3:44 ` Junio C Hamano
2017-10-31 0:33 ` [PATCH 7/7] t6120: fix typo in test name Stefan Beller
2017-11-01 1:21 ` Junio C Hamano
2017-11-01 18:13 ` Stefan Beller
2017-11-02 1:36 ` Junio C Hamano
2017-10-31 21:18 ` [PATCHv2 0/7] git describe blob Stefan Beller
2017-10-31 21:18 ` [PATCHv2 1/7] list-objects.c: factor out traverse_trees_and_blobs Stefan Beller
2017-11-01 3:46 ` Junio C Hamano
2017-10-31 21:18 ` [PATCHv2 2/7] revision.h: introduce blob/tree walking in order of the commits Stefan Beller
2017-11-01 3:50 ` Junio C Hamano
2017-11-01 12:26 ` Johannes Schindelin
2017-11-01 12:37 ` Junio C Hamano
2017-11-01 19:37 ` Stefan Beller
2017-11-01 22:08 ` Johannes Schindelin
2017-11-01 22:19 ` Stefan Beller
2017-11-01 22:39 ` Johannes Schindelin
2017-11-01 22:46 ` Stefan Beller
2017-11-01 21:36 ` Johannes Schindelin
2017-11-01 21:39 ` Jeff King
2017-11-01 22:33 ` Johannes Schindelin
2017-11-02 1:20 ` Junio C Hamano
2017-10-31 21:18 ` [PATCHv2 3/7] builtin/describe.c: rename `oid` to avoid variable shadowing Stefan Beller
2017-10-31 21:18 ` [PATCHv2 4/7] builtin/describe.c: print debug statements earlier Stefan Beller
2017-10-31 21:31 ` Eric Sunshine
2017-10-31 21:18 ` [PATCHv2 5/7] builtin/describe.c: factor out describe_commit Stefan Beller
2017-10-31 21:18 ` [PATCHv2 6/7] builtin/describe.c: describe a blob Stefan Beller
2017-10-31 21:49 ` Eric Sunshine
2017-11-01 19:51 ` Stefan Beller
2017-11-01 4:11 ` Junio C Hamano
2017-11-01 12:32 ` Johannes Schindelin
2017-11-01 17:59 ` Stefan Beller
2017-11-01 21:05 ` Jacob Keller
2017-11-01 22:12 ` Johannes Schindelin
2017-11-01 22:21 ` Stefan Beller
2017-11-01 22:41 ` Johannes Schindelin
2017-11-01 22:53 ` Stefan Beller
2017-11-02 6:05 ` Jacob Keller
2017-11-03 5:18 ` Junio C Hamano
2017-11-03 6:55 ` Jacob Keller
2017-11-03 15:02 ` Junio C Hamano
2017-11-02 7:23 ` Andreas Schwab
2017-11-02 18:18 ` Stefan Beller
2017-11-03 12:05 ` Johannes Schindelin
2017-11-01 21:28 ` Stefan Beller
2017-10-31 21:18 ` [PATCHv2 7/7] t6120: fix typo in test name Stefan Beller
2017-11-01 5:14 ` [PATCHv2 0/7] git describe blob Junio C Hamano
2017-11-02 19:41 ` [PATCHv3 " Stefan Beller
2017-11-02 19:41 ` [PATCHv3 1/7] t6120: fix typo in test name Stefan Beller
2017-11-02 19:41 ` [PATCHv3 2/7] list-objects.c: factor out traverse_trees_and_blobs Stefan Beller
2017-11-02 19:41 ` [PATCHv3 3/7] revision.h: introduce blob/tree walking in order of the commits Stefan Beller
2017-11-14 19:52 ` Jonathan Tan
2017-11-02 19:41 ` [PATCHv3 4/7] builtin/describe.c: rename `oid` to avoid variable shadowing Stefan Beller
2017-11-02 19:41 ` [PATCHv3 5/7] builtin/describe.c: print debug statements earlier Stefan Beller
2017-11-14 19:55 ` Jonathan Tan
2017-11-14 20:00 ` Stefan Beller
2017-11-02 19:41 ` [PATCHv3 6/7] builtin/describe.c: factor out describe_commit Stefan Beller
2017-11-02 19:41 ` [PATCHv3 7/7] builtin/describe.c: describe a blob Stefan Beller
2017-11-14 20:02 ` Jonathan Tan
2017-11-14 20:40 ` Stefan Beller
2017-11-14 21:17 ` Jonathan Tan
2017-11-03 0:23 ` [PATCHv3 0/7] git describe blob Jacob Keller
2017-11-03 1:46 ` Junio C Hamano
2017-11-03 2:29 ` Stefan Beller
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171031003351.22341-3-sbeller@google.com \
--to=sbeller@google.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=jacob.keller@gmail.com \
--cc=me@ikke.info \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.