path: root/strbuf.h
diff options
authorRene Scharfe <>2005-04-28 19:16:43 (GMT)
committerLinus Torvalds <>2005-04-28 19:16:43 (GMT)
commit731ab9ccf23b813d1218bd638043bd11af98012f (patch)
treec2f7108ef45d6d0519d4b0452b45ed4a40fbd0c4 /strbuf.h
parent9ff768e9408b2afac5dbb484eb5c301312bdee80 (diff)
[PATCH] create tar archives of tree on the fly
This is an improved version of tar-tree, a streaming archive creator for GIT. The major added feature is blocking; all write(2) calls now have a size of 10240, just as GNU tar (and tape drives) likes them. The buffering overhead does not seem to degrade performance because most files in the repositories I tested this with are smaller than 10KB, so we need fewer system calls. File names are still restricted to 500 bytes and the archive format currently only allows for files up to 8GB. Both restrictions can be lifted if need be with more pax extended headers. The archive format used is the pax interchange format, i.e. POSIX tar format. It can be read by (and created with) GNU tar. If I read the specs correctly tar-tree should now be standards compliant (modulo bugs). Because it streams the archive (think ls-tree merged with cat-file), tar-tree doesn't need to create any temporary files. That makes it quite fast. It accepts tree IDs and commit IDs as first parameter. In the latter case tar-tree tries to get the commit date out of the committer line. Else all files in the archive are time-stamped with the current time. An optional second parameter is used as a path prefix for all files in the archive. Example: $ tar-tree a2755a80f40e5794ddc20e00f781af9d6320fafb \ linux-2.6.12-rc3 | bzip9 -9 > linux-2.6.12-rc3.tar.bz2 Signed-off-by: Rene Scharfe <> Signed-off-by: Linus Torvalds <>
Diffstat (limited to 'strbuf.h')
0 files changed, 0 insertions, 0 deletions