1
0
mirror of https://github.com/git/git.git synced 2024-09-28 20:51:42 +02:00

git-archive: don't die when repository uses subprojects

Both archive-tar and archive-zip needed to be taught about subprojects.
The tar function died when trying to read the subproject commit object,
while the zip function reported "unsupported file mode".

This fixes both by representing the subproject as an empty directory.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Lars Hjemli 2007-05-11 18:55:21 +02:00 committed by Junio C Hamano
parent 2206537c07
commit 02851e0b9e
2 changed files with 4 additions and 4 deletions

@ -166,7 +166,7 @@ static void write_entry(const unsigned char *sha1, struct strbuf *path,
} else {
if (verbose)
fprintf(stderr, "%.*s\n", path->len, path->buf);
if (S_ISDIR(mode)) {
if (S_ISDIR(mode) || S_ISDIRLNK(mode)) {
*header.typeflag = TYPEFLAG_DIR;
mode = (mode | 0777) & ~tar_umask;
} else if (S_ISLNK(mode)) {
@ -278,7 +278,7 @@ static int write_tar_entry(const unsigned char *sha1,
memcpy(path.buf, base, baselen);
memcpy(path.buf + baselen, filename, filenamelen);
path.len = baselen + filenamelen;
if (S_ISDIR(mode)) {
if (S_ISDIR(mode) || S_ISDIRLNK(mode)) {
strbuf_append_string(&path, "/");
buffer = NULL;
size = 0;

@ -182,10 +182,10 @@ static int write_zip_entry(const unsigned char *sha1,
goto out;
}
if (S_ISDIR(mode)) {
if (S_ISDIR(mode) || S_ISDIRLNK(mode)) {
method = 0;
attr2 = 16;
result = READ_TREE_RECURSIVE;
result = (S_ISDIR(mode) ? READ_TREE_RECURSIVE : 0);
out = NULL;
uncompressed_size = 0;
compressed_size = 0;