From: Mark Levedahl <mdl123@verizon.net>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] git-bundle - bundle objects and references for disconnected transfer.
Date: Wed, 14 Feb 2007 21:32:13 -0500 [thread overview]
Message-ID: <45D3C62D.6090609@verizon.net> (raw)
In-Reply-To: <Pine.LNX.4.63.0702150054210.22628@wbgn013.biozentrum.uni-wuerzburg.de>
Johannes Schindelin wrote:
> Hi,
>
> On Wed, 14 Feb 2007, Mark Levedahl wrote:
>
>
> Ah, I just realized that you do not shift. This is wrong. For example,
>
> git bundle --output=a1 a..b
>
> would pass "--output=a1 a..b" to git-rev-parse. While you say
> "--revs-only", this would work, but so would "these are no refs". You lose
> valuable information that way (namely invalid parameters). The standard
> shell way is nicely visible in git-tag.sh (see the while loop). It is
> basically
>
> while case "$#" in 0) break ;; esac
> do
> case "$1" in
> --output)
> # handle $1 (and check that you can write to it).
> ;;
> -*)
> usage
> ;;
> *)
> break
> esac
> done
And that loop would always abort on things meant for git-rev-list. I
want to avoid making git-bundle have to understand everything that is
legal to git-rev-list. The current construct does this: it lets
git-rev-parse remove what that function knows, aborting if something is
amiss (or aborting later in git-rev-list), leaving git-bundle's parser
to chew on the rest. I really don't see a way out of the dilemma: either
allow --output foo but don't barf on bad arguments, or only accept
--output=foo and be able to trap errors, or teach git-bundle everything
that is valid for the other two. (Let me write this in python, the
dilemma is gone).
>>>
>> Originally, this was in python with zip file built in memory (no
>> temporaries). Sticking to portable shell makes many easy things really
>> hard.
>
> Not if you just pipe the two parts (refs & pack) into the output. Piping
> also allows for "--output -" meaning stdout...
git-unbundle uses no temporary files: it pipes directly from tar (was
zip, but I've changed to tar per Junio's request).
The problem is creating the tar: I know of no way to create a tar file
with two separately addressable items, both created by piping in to
stdin. If there are not two streams, I don't know how to split the data
in sh without mangling the pack file due to sh variable substitution
rules. So, I think the temporary file solution is a reasonable compromise.
>
> Not at all. I meant to verify that these _hashes_ exist as commits. Not
> necessarily refs.
See my other note.
>
>
> We have shallow clones. This means that you can mark commits as "fake
> root" commits, i.e. even if they have parents, they are treated as if they
> had no parents. You do this by adding the hashes of the shallow commits to
> ..git/shallow. For a short description, search for "shallow" in
> Documentation/glossary.txt.
Thanks.
>
> Ciao,
> Dscho
>
Mark
next prev parent reply other threads:[~2007-02-15 2:32 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-14 14:10 Scripts to use "bundles" for moving data between repositories Mark Levedahl
2007-02-14 14:10 ` [PATCH] git-bundle - bundle objects and references for disconnected transfer Mark Levedahl
2007-02-14 14:10 ` [PATCH] git-unbundle - unbundle " Mark Levedahl
2007-02-14 14:10 ` [PATCH] Create a man page for git-bundle Mark Levedahl
2007-02-14 14:10 ` [PATCH] Create a man page for git-unbundle Mark Levedahl
2007-02-14 19:45 ` [PATCH] git-unbundle - unbundle objects and references for disconnected transfer Shawn O. Pearce
2007-02-14 20:57 ` Mark Levedahl
2007-02-14 21:03 ` Shawn O. Pearce
2007-02-14 22:43 ` Mark Levedahl
2007-02-14 21:18 ` Nicolas Pitre
2007-02-14 19:42 ` [PATCH] git-bundle - bundle " Shawn O. Pearce
2007-02-14 21:58 ` Johannes Schindelin
2007-02-14 23:19 ` Mark Levedahl
2007-02-14 23:55 ` Mark Levedahl
2007-02-15 0:15 ` Johannes Schindelin
2007-02-15 2:13 ` Mark Levedahl
2007-02-15 15:35 ` Johannes Schindelin
2007-02-15 0:07 ` Johannes Schindelin
2007-02-15 2:32 ` Mark Levedahl [this message]
2007-02-15 15:32 ` Johannes Schindelin
2007-02-16 0:12 ` Mark Levedahl
2007-02-16 0:40 ` Johannes Schindelin
2007-02-16 3:23 ` Mark Levedahl
2007-02-14 14:13 ` Scripts to use "bundles" for moving data between repositories Matthieu Moy
2007-02-14 14:37 ` Mark Levedahl
2007-02-14 15:46 ` Johannes Schindelin
2007-02-14 17:11 ` Junio C Hamano
2007-02-14 17:56 ` Mark Levedahl
2007-02-14 18:00 ` Junio C Hamano
2007-02-14 21:24 ` Mark Levedahl
2007-02-14 21:26 ` Junio C Hamano
2007-02-14 18:20 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=45D3C62D.6090609@verizon.net \
--to=mdl123@verizon.net \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
/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.