Hi, On Wed, 1 Feb 2006, Junio C Hamano wrote:Just skip the "If". I'll start to enclose all emails I write in <tired>..</tired> blocks. See below. I think it would be trivial: just resolve ~A to the tree A points to: -- snip -- [PATCH] rev-list: Support "~treeish" Now, "git rev-list --objects ~some_rev" traverses just the tree of some_rev. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> --- rev-list.c | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) 43267e65c9ad933ad1a49005c4b61c23adaec372 diff --git a/rev-list.c b/rev-list.c index 8012762..a196110 100644 --- a/rev-list.c +++ b/rev-list.c @@ -720,6 +720,24 @@ static void handle_one_commit(struct com commit_list_insert(com, lst); } +static void handle_tree(const unsigned char *sha1) +{ + struct object *object; + + object = parse_object(sha1); + if (!object) + die("bad object %s", sha1_to_hex(sha1)); + + if (object->type == tree_type) + add_pending_object(object, ""); + else if (object->type == commit_type) { + struct commit *commit = (struct commit *)object; + if (parse_commit(commit) < 0) + die("unable to parse commit %s", sha1_to_hex(sha1)); + add_pending_object(&(commit->tree->object), ""); + } +} + /* for_each_ref() callback does not allow user data -- Yuck. */ static struct commit_list **global_lst; @@ -865,6 +883,11 @@ int main(int argc, const char **argv) flags = UNINTERESTING; arg++; limited = 1; + } else if (*arg == '~') { + if (get_sha1(arg + 1, sha1) < 0) + die("cannot get '%s'", arg); + handle_tree(sha1); + continue; } if (get_sha1(arg, sha1) < 0) { struct stat st; -- 1.1.4.g9bd9d-dirty -- snap -- Exactly. And grafts are grafts are not necessarily cutoffs. Now, is it possible that a fetch does something unintended, when there are grafts which are not cutoffs? I don't know yet, but I think so. Ciao, Dscho - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Mattia Dongili | Re: Linux 2.6.21-rc6 |
| Greg Kroah-Hartman | [PATCH 024/196] mtd: Convert from class_device to device for MTD/mtdchar |
| Renato S. Yamane | Error -71 on device descriptor read/all |
| Chuck Ebbert | Why do so many machines need "noapic"? |
git: | |
| Mirko Stocker | Working with Git and CVS in a team. |
| Steffen Prohaska | Git-1.6.0.2-preview20080921 on Windows |
| Miles Bader | way to automatically add untracked files? |
| Tilman Sauerbeck | [BUG?] git log picks up bad commit |
| Brian A. Seklecki | sshd_config(5) PermitRootLogin yes |
| Jacob Yocom-Piatt | Re: Real men don't attack straw men |
| Parvinder Bhasin | BIND and CNAME-ing |
| Jerome Santos | sshd.config and AllowUsers |
| Patrick McHardy | pkt_sched: add DRR scheduler |
| ackman | RTL8169 driver no longer functioning with 8111b |
| Evgeniy Polyakov | [resend take 2 4/4] DST Makefile/Kconfig files. |
| Sami Farin | Linux 2.6.27.5 / SFQ/HTB scheduling problems |
| Kernel Panic when schedule is called | 1 hour ago | Linux kernel |
| VPN's on NetBSD | 15 hours ago | NetBSD |
| Why does uClinux 2.6.18 bootup block SuperIO UART IRQs that BIOS configured | 16 hours ago | Linux kernel |
| USB statistics | 17 hours ago | Linux kernel |
| Block Sub System query | 22 hours ago | Linux kernel |
| kernel module to intercept socket creation | 23 hours ago | Linux kernel |
| Image size changing during each build | 23 hours ago | Linux kernel |
| Soft lock bug | 1 day ago | Linux kernel |
| sysctl - dynamic registration problem | 1 day ago | Linux kernel |
| Question on swap as ramdisk partition | 1 day ago | Linux kernel |
