diff options
author | René Scharfe <rene.scharfe@lsrfire.ath.cx> | 2007-05-19 00:09:41 +0200 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-05-18 16:36:45 -0700 |
commit | 5e6cfc80e26a4d0ebac38cff74c2cdebbe66cd27 (patch) | |
tree | 6f816b7b8ea0c284aa9c25c440ecca64c514b83c /cache.h | |
parent | 4229aa5141b5d7716d283fa8625209b59398d7ba (diff) | |
download | git-5e6cfc80e26a4d0ebac38cff74c2cdebbe66cd27.tar.gz git-5e6cfc80e26a4d0ebac38cff74c2cdebbe66cd27.tar.xz |
git-archive: convert archive entries like checkouts do
As noted by Johan Herland, git-archive is a kind of checkout and needs
to apply any checkout filters that might be configured.
This patch adds the convenience function convert_sha1_file which returns
a buffer containing the object's contents, after converting, if necessary
(i.e. it's a combination of read_sha1_file and convert_to_working_tree).
Direct calls to read_sha1_file in git-archive are then replaced by calls
to convert_sha1_file.
Since convert_sha1_file expects its path argument to be NUL-terminated --
a convention it inherits from convert_to_working_tree -- the patch also
changes the path handling in archive-tar.c to always NUL-terminate the
string. It used to solely rely on the len field of struct strbuf before.
archive-zip.c already NUL-terminates the path and thus needs no such
change.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'cache.h')
-rw-r--r-- | cache.h | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -548,6 +548,7 @@ extern void trace_argv_printf(const char **argv, int count, const char *format, /* convert.c */ extern char *convert_to_git(const char *path, const char *src, unsigned long *sizep); extern char *convert_to_working_tree(const char *path, const char *src, unsigned long *sizep); +extern void *convert_sha1_file(const char *path, const unsigned char *sha1, unsigned int mode, enum object_type *type, unsigned long *size); /* match-trees.c */ void shift_tree(const unsigned char *, const unsigned char *, unsigned char *, int); |