git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] git-bundle - bundle objects and references for disconnected transfer.

From
Mark Levedahl <mdl123@verizon.net>
Date
Feb 15, 2007, 02:32 UTC
Message-ID
<45D3C62D.6090609@verizon.net>
In-Reply-To
<Pine.LNX.4.63.0702150054210.22628@wbgn013.biozentrum.uni-wuerzburg.de>
Johannes Schindelin wrote:
Show 28 quoted lines
> 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).

Show 7 quoted lines
>>>   
>> 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.
Show 7 quoted lines
>
> 
> 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
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 19 of 32 in “Scripts to use "bundles" for moving data between repositories”
  1. Mark LevedahlFeb 14, 2007
  2. git-bundle - bundle objects and references for disconnected transfer.Mark Levedahl, Feb 14, 2007
  3. git-unbundle - unbundle objects and references for disconnected transfer.Mark Levedahl, Feb 14, 2007
  4. Create a man page for git-bundle.Mark Levedahl, Feb 14, 2007
  5. Create a man page for git-unbundle.Mark Levedahl, Feb 14, 2007
  6. Shawn O. PearceFeb 14, 2007
  7. Mark LevedahlFeb 14, 2007
  8. Shawn O. PearceFeb 14, 2007
  9. Mark LevedahlFeb 14, 2007
  10. Nicolas PitreFeb 14, 2007
  11. Shawn O. PearceFeb 14, 2007
  12. Johannes SchindelinFeb 14, 2007
  13. Mark LevedahlFeb 14, 2007
  14. Mark LevedahlFeb 14, 2007
  15. Johannes SchindelinFeb 15, 2007
  16. Mark LevedahlFeb 15, 2007
  17. Johannes SchindelinFeb 15, 2007
  18. Johannes SchindelinFeb 15, 2007
  19. Mark LevedahlFeb 15, 2007
  20. Johannes SchindelinFeb 15, 2007
  21. Mark LevedahlFeb 16, 2007
  22. Johannes SchindelinFeb 16, 2007
  23. Mark LevedahlFeb 16, 2007
  24. Matthieu MoyFeb 14, 2007
  25. Mark LevedahlFeb 14, 2007
  26. Johannes SchindelinFeb 14, 2007
  27. Junio C HamanoFeb 14, 2007
  28. Mark LevedahlFeb 14, 2007
  29. Junio C HamanoFeb 14, 2007
  30. Mark LevedahlFeb 14, 2007
  31. Junio C HamanoFeb 14, 2007
  32. Junio C HamanoFeb 14, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.