From: Sergey Vlasov <vsu@altlinux.ru>
To: Junio C Hamano <junkio@cox.net>
Cc: git@vger.kernel.org
Subject: [PATCH 6/6] git-local-fetch: Avoid confusing error messages on packed repositories
Date: Fri, 23 Sep 2005 16:28:38 +0400 (MSD) [thread overview]
Message-ID: <20050923122838.5107AE010FC@center4.mivlgu.local> (raw)
In-Reply-To: <20050923122754.GB2197@master.mivlgu.local>
If the source repository was packed, and git-local-fetch needed to
fetch a pack file, it spewed a misleading error message about not
being able to find the unpacked object. Fixed by adding the
warn_if_not_exists argument to copy_file(), which controls printing
of error messages in case the source file does not exist.
Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
---
local-fetch.c | 17 ++++++++++++-----
1 files changed, 12 insertions(+), 5 deletions(-)
3417063eaaf7a9293621a72c8b5df4653daf04ea
diff --git a/local-fetch.c b/local-fetch.c
--- a/local-fetch.c
+++ b/local-fetch.c
@@ -52,7 +52,8 @@ static int setup_indices(void)
return 0;
}
-static int copy_file(const char *source, const char *dest, const char *hex)
+static int copy_file(const char *source, const char *dest, const char *hex,
+ int warn_if_not_exists)
{
if (use_link) {
if (!link(source, dest)) {
@@ -61,13 +62,16 @@ static int copy_file(const char *source,
}
/* If we got ENOENT there is no point continuing. */
if (errno == ENOENT) {
- fprintf(stderr, "does not exist %s\n", source);
+ if (warn_if_not_exists)
+ fprintf(stderr, "does not exist %s\n", source);
return -1;
}
}
if (use_symlink) {
struct stat st;
if (stat(source, &st)) {
+ if (!warn_if_not_exists && errno == ENOENT)
+ return -1;
fprintf(stderr, "cannot stat %s: %s\n", source,
strerror(errno));
return -1;
@@ -83,8 +87,11 @@ static int copy_file(const char *source,
void *map;
ifd = open(source, O_RDONLY);
if (ifd < 0 || fstat(ifd, &st) < 0) {
+ int err = errno;
if (ifd >= 0)
close(ifd);
+ if (!warn_if_not_exists && err == ENOENT)
+ return -1;
fprintf(stderr, "cannot open %s\n", source);
return -1;
}
@@ -129,11 +136,11 @@ static int fetch_pack(const unsigned cha
sprintf(filename, "%s/objects/pack/pack-%s.pack",
path, sha1_to_hex(target->sha1));
copy_file(filename, sha1_pack_name(target->sha1),
- sha1_to_hex(target->sha1));
+ sha1_to_hex(target->sha1), 1);
sprintf(filename, "%s/objects/pack/pack-%s.idx",
path, sha1_to_hex(target->sha1));
copy_file(filename, sha1_pack_index_name(target->sha1),
- sha1_to_hex(target->sha1));
+ sha1_to_hex(target->sha1), 1);
install_packed_git(target);
return 0;
}
@@ -154,7 +161,7 @@ static int fetch_file(const unsigned cha
filename[object_name_start+1] = hex[1];
filename[object_name_start+2] = '/';
strcpy(filename + object_name_start + 3, hex + 2);
- return copy_file(filename, dest_filename, hex);
+ return copy_file(filename, dest_filename, hex, 0);
}
int fetch(unsigned char *sha1)
prev parent reply other threads:[~2005-09-23 12:28 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-23 12:27 [PATCH 0/6] More fetch fixes Sergey Vlasov
2005-09-23 12:28 ` [PATCH 1/6] fetch.c: Do not build object ref lists Sergey Vlasov
2005-09-23 12:28 ` [PATCH 2/6] fetch.c: Plug memory leak in process_tree() Sergey Vlasov
2005-09-23 12:28 ` [PATCH 3/6] git-local-fetch: Fix error checking and leak in setup_indices() Sergey Vlasov
2005-09-23 12:28 ` [PATCH 4/6] git-local-fetch: Avoid calling close(-1) Sergey Vlasov
2005-09-23 12:28 ` [PATCH 5/6] Fix "git-local-fetch -s" with packed source repository Sergey Vlasov
2005-09-23 12:28 ` Sergey Vlasov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050923122838.5107AE010FC@center4.mivlgu.local \
--to=vsu@altlinux.ru \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox