From: Nicolas Pitre <nico@fluxnic.net>
To: Luke Kenneth Casson Leighton <luke.leighton@gmail.com>
Cc: Artur Skawina <art.08.09@gmail.com>,
Nguyen Thai Ngoc Duy <pclouds@gmail.com>,
Ted Ts'o <tytso@mit.edu>, Junio C Hamano <gitster@pobox.com>,
git <git@vger.kernel.org>
Subject: Re: git pack/unpack over bittorrent - works!
Date: Sat, 04 Sep 2010 22:16:02 -0400 (EDT) [thread overview]
Message-ID: <alpine.LFD.2.00.1009042132500.19366@xanadu.home> (raw)
In-Reply-To: <AANLkTik9awEd40s3r-O8t9DwZBh34Z0ozsxMm1QNjNoT@mail.gmail.com>
On Sat, 4 Sep 2010, Luke Kenneth Casson Leighton wrote:
> * git-index-pack requires a pack file in order to re-create the index:
> i don't want that
> * git-pack-objects appears to have no way of telling it "just gimme
> index file please"
> * fast-import.c appears not to be what's needed either.
>
> so - any other methods for just getting the index file (exclusively?)
> any other commands i've missed? if not, are there any other ways of
> getting a pack's index of objects without err... getting the index
> file? (i believe the answer to be no, but i'm just making sure) and
> on that basis i believe it is safe to ask: any objections to a patch
> which adds "--index-only" to builtin/pack-objects.c?
No patch is needed.
First, what you want is an index of objects you are willing to share,
and not the index of whatever pack file you might have on your disk,
especially if you have multiple packs which is typical.
Try this instead:
git rev-list --objects HEAD | cut -c -40 | sort
That will give you a sorted list of all objects reachable from the
current branch. With the Linux repo, you may replace "HEAD" with
"v2.6.34..v2.6.35" if you wish, and that would give you the list of the
new objects that were introduced between v2.6.34 and v2.6.35. This will
provide you with 84642 objects instead of the 1.7 million objects that
the Linux repo contains (easier when testing stuff).
That sorted list of objects is more or less what the pack index file
contains, plus an offset in the pack for each entry. It is used to
quickly find the offset for a given object in the corresponding pack
file, and the fanout is only a way to cut 3 iterations in the binary
search.
But anyway, what you want is really to select the precise set of objects
you wish to share, and not blindly using the pack index file. If you
have a public branch and a private branch in your repository, then
objects from both branches may end up in the same pack and you probably
don't want to publish those objects from the private branch. The only
reliable way to generate a list of object is to use the output from 'git
rev-list'. Those objects may come from one or multiple packs, or be
loose in the object subdirectories, or even borrowed from another
repository through the alternates mechanism. But rev-list will dig
those object SHA1s for you and only those you asked for.
You should look at the Git documentation for plumbing commands. The
plumbing is actually a toolset that allows you to manipulate and extract
information from a Git repository. This is really handy for prototyping
new functionalities. Initially, the Git user interface was all
implemented in shell scripts on top of that plumbing.
Back to that rev-list output... OK, you want the equivalent of a fanout
table. You may do something like this then:
git rev-list --objects v2.6.34..v2.6.35 | cut -c -2 | sort | uniq -c
And so on.
Nicolas
next prev parent reply other threads:[~2010-09-05 2:16 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-01 14:36 git pack/unpack over bittorrent - works! Luke Kenneth Casson Leighton
2010-09-01 22:04 ` Nguyen Thai Ngoc Duy
2010-09-02 13:37 ` Luke Kenneth Casson Leighton
2010-09-02 13:53 ` Luke Kenneth Casson Leighton
2010-09-02 14:08 ` Ævar Arnfjörð Bjarmason
2010-09-02 15:33 ` A Large Angry SCM
2010-09-02 15:42 ` Luke Kenneth Casson Leighton
2010-09-02 15:51 ` Luke Kenneth Casson Leighton
2010-09-02 17:06 ` A Large Angry SCM
2010-09-02 15:58 ` Jeff King
2010-09-02 16:41 ` Nicolas Pitre
2010-09-02 17:09 ` A Large Angry SCM
2010-09-02 17:31 ` Nicolas Pitre
2010-09-02 19:17 ` Luke Kenneth Casson Leighton
2010-09-02 19:29 ` Shawn O. Pearce
2010-09-02 19:51 ` Luke Kenneth Casson Leighton
2010-09-02 20:06 ` Luke Kenneth Casson Leighton
2010-09-03 0:36 ` Nicolas Pitre
2010-09-03 10:34 ` Luke Kenneth Casson Leighton
2010-09-03 17:03 ` Junio C Hamano
2010-09-02 20:28 ` Brandon Casey
2010-09-02 20:48 ` Luke Kenneth Casson Leighton
2010-09-02 20:45 ` Jakub Narebski
2010-09-02 21:10 ` Luke Kenneth Casson Leighton
2010-09-02 21:19 ` Luke Kenneth Casson Leighton
2010-09-03 0:29 ` Nicolas Pitre
2010-09-03 2:48 ` Nguyen Thai Ngoc Duy
2010-09-03 10:55 ` Luke Kenneth Casson Leighton
2010-09-03 10:23 ` Luke Kenneth Casson Leighton
2010-09-03 10:54 ` Luke Kenneth Casson Leighton
2010-09-02 18:07 ` Luke Kenneth Casson Leighton
2010-09-02 18:23 ` Casey Dahlin
2010-09-02 16:58 ` A Large Angry SCM
2010-09-02 17:21 ` Nicolas Pitre
2010-09-02 19:41 ` Luke Kenneth Casson Leighton
2010-09-02 19:52 ` A Large Angry SCM
2010-09-02 23:09 ` Nicolas Pitre
2010-09-03 10:37 ` Theodore Tso
2010-09-03 11:04 ` Luke Kenneth Casson Leighton
2010-09-03 17:12 ` Junio C Hamano
2010-09-03 18:31 ` Ted Ts'o
2010-09-03 19:41 ` Nicolas Pitre
2010-09-03 21:11 ` Luke Kenneth Casson Leighton
2010-09-04 0:24 ` Nguyen Thai Ngoc Duy
2010-09-04 0:57 ` Nguyen Thai Ngoc Duy
2010-09-04 1:52 ` Artur Skawina
2010-09-04 4:39 ` Nicolas Pitre
2010-09-04 5:42 ` Artur Skawina
2010-09-04 6:13 ` Nicolas Pitre
2010-09-04 11:58 ` Luke Kenneth Casson Leighton
2010-09-04 13:14 ` Luke Kenneth Casson Leighton
2010-09-05 2:16 ` Nicolas Pitre [this message]
2010-09-05 18:05 ` Luke Kenneth Casson Leighton
2010-09-05 23:52 ` Nicolas Pitre
2010-09-06 13:23 ` Luke Kenneth Casson Leighton
2010-09-06 16:51 ` Nicolas Pitre
2010-09-06 22:33 ` Luke Kenneth Casson Leighton
2010-09-06 23:34 ` Junio C Hamano
2010-09-06 23:57 ` Nicolas Pitre
2010-09-07 0:17 ` Luke Kenneth Casson Leighton
2010-09-07 0:29 ` Luke Kenneth Casson Leighton
2010-09-04 13:42 ` Artur Skawina
[not found] ` <20100904155638.GA17606@pcpool00.mathematik.uni-freiburg.de>
2010-09-04 17:23 ` Artur Skawina
2010-09-04 18:46 ` Artur Skawina
2010-09-04 1:57 ` Theodore Tso
2010-09-04 5:23 ` Kyle Moffett
2010-09-04 11:46 ` Theodore Tso
2010-09-04 14:06 ` Luke Kenneth Casson Leighton
2010-09-05 1:32 ` Nicolas Pitre
2010-09-05 17:16 ` Luke Kenneth Casson Leighton
2010-09-04 5:40 ` Nicolas Pitre
2010-09-04 12:00 ` Theodore Tso
2010-09-04 12:44 ` Luke Kenneth Casson Leighton
2010-09-04 14:50 ` Luke Kenneth Casson Leighton
2010-09-04 18:14 ` Ted Ts'o
2010-09-04 20:00 ` Luke Kenneth Casson Leighton
2010-09-04 22:41 ` Ted Ts'o
2010-09-05 17:22 ` Luke Kenneth Casson Leighton
2010-09-04 20:20 ` Jakub Narebski
2010-09-04 20:47 ` Luke Kenneth Casson Leighton
2010-09-04 21:16 ` Jakub Narebski
2010-09-04 21:24 ` Luke Kenneth Casson Leighton
2010-09-04 22:47 ` Ted Ts'o
2010-09-05 1:43 ` Tomas Carnecky
2010-09-05 1:18 ` Nicolas Pitre
2010-09-05 17:25 ` Luke Kenneth Casson Leighton
2010-09-06 0:05 ` Nicolas Pitre
2010-09-04 12:33 ` Luke Kenneth Casson Leighton
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=alpine.LFD.2.00.1009042132500.19366@xanadu.home \
--to=nico@fluxnic.net \
--cc=art.08.09@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=luke.leighton@gmail.com \
--cc=pclouds@gmail.com \
--cc=tytso@mit.edu \
/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 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 NNTP newsgroup(s).