Skip to content

Commit

Permalink
Add git-zip-tree
Browse files Browse the repository at this point in the history
In the Windows world ZIP files are better supported than tar files.
Windows even includes built-in support for ZIP files nowadays.

git-zip-tree is similar to git-tar-tree; it creates ZIP files out of
git trees.  It stores the commit ID (if available) in a ZIP file comment
which can be extracted by unzip.

There's still quite some room for improvement: this initial version
supports no symlinks, calls write() way too often (three times per file)
and there is no unit test.

[jc: with a minor typefix to avoid void* arithmetic]

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Rene Scharfe authored and Junio C Hamano committed Aug 27, 2006
1 parent 5f641cc commit e4fbbfe
Show file tree
Hide file tree
Showing 5 changed files with 424 additions and 1 deletion.
67 changes: 67 additions & 0 deletions Documentation/git-zip-tree.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
git-zip-tree(1)
===============

NAME
----
git-zip-tree - Creates a ZIP archive of the files in the named tree


SYNOPSIS
--------
'git-zip-tree' [-0|...|-9] <tree-ish> [ <base> ]

DESCRIPTION
-----------
Creates a ZIP archive containing the tree structure for the named tree.
When <base> is specified it is added as a leading path to the files in the
generated ZIP archive.

git-zip-tree behaves differently when given a tree ID versus when given
a commit ID or tag ID. In the first case the current time is used as
modification time of each file in the archive. In the latter case the
commit time as recorded in the referenced commit object is used instead.
Additionally the commit ID is stored as an archive comment.

Currently git-zip-tree can handle only files and directories, symbolic
links are not supported.

OPTIONS
-------

-0::
Store the files instead of deflating them.

-9::
Highest and slowest compression level. You can specify any
number from 1 to 9 to adjust compression speed and ratio.

<tree-ish>::
The tree or commit to produce ZIP archive for. If it is
the object name of a commit object.

<base>::
Leading path to the files in the resulting ZIP archive.

EXAMPLES
--------
git zip-tree v1.4.0 git-1.4.0 >git-1.4.0.zip::

Create a ZIP file for v1.4.0 release.

git zip-tree HEAD:Documentation/ git-docs >docs.zip::

Put everything in the current head's Documentation/ directory
into 'docs.zip', with the prefix 'git-docs/'.

Author
------
Written by Rene Scharfe.

Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,8 @@ BUILTIN_OBJS = \
builtin-update-ref.o \
builtin-upload-tar.o \
builtin-verify-pack.o \
builtin-write-tree.o
builtin-write-tree.o \
builtin-zip-tree.o

GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
LIBS = $(GITLIBS) -lz
Expand Down
Loading

0 comments on commit e4fbbfe

Please sign in to comment.