diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-04 18:18:40 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-04 18:18:40 -0700 |
commit | d0d0d0bd3c2c4591ffbc292d7e082e8ad8f2057f (patch) | |
tree | d44581630e7a2f095d96b33876f6e0c14ce76a5a /local-pull.c | |
parent | Make "git-prune-script" take all refs into account. (diff) | |
parent | When the patch tries to create a new file and the file exists, abort. (diff) | |
download | tgif-d0d0d0bd3c2c4591ffbc292d7e082e8ad8f2057f.tar.xz |
Merge http://members.cox.net/junkio/git-jc.git/
Diffstat (limited to 'local-pull.c')
-rw-r--r-- | local-pull.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/local-pull.c b/local-pull.c index ea38d87dfd..4f52bca48c 100644 --- a/local-pull.c +++ b/local-pull.c @@ -39,12 +39,19 @@ int fetch(unsigned char *sha1) filename[object_name_start+1] = hex[1]; filename[object_name_start+2] = '/'; strcpy(filename + object_name_start + 3, hex + 2); - if (use_link && !link(filename, dest_filename)) { - say("Hardlinked %s.\n", hex); - return 0; + if (use_link) { + if (!link(filename, dest_filename)) { + say("link %s\n", hex); + return 0; + } + /* If we got ENOENT there is no point continuing. */ + if (errno == ENOENT) { + fprintf(stderr, "does not exist %s\n", filename); + return -1; + } } if (use_symlink && !symlink(filename, dest_filename)) { - say("Symlinked %s.\n", hex); + say("symlink %s\n", hex); return 0; } if (use_filecopy) { @@ -54,13 +61,13 @@ int fetch(unsigned char *sha1) ifd = open(filename, O_RDONLY); if (ifd < 0 || fstat(ifd, &st) < 0) { close(ifd); - fprintf(stderr, "Cannot open %s\n", filename); + fprintf(stderr, "cannot open %s\n", filename); return -1; } map = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, ifd, 0); close(ifd); if (-1 == (int)(long)map) { - fprintf(stderr, "Cannot mmap %s\n", filename); + fprintf(stderr, "cannot mmap %s\n", filename); return -1; } ofd = open(dest_filename, O_WRONLY | O_CREAT | O_EXCL, 0666); @@ -69,13 +76,13 @@ int fetch(unsigned char *sha1) munmap(map, st.st_size); close(ofd); if (status) - fprintf(stderr, "Cannot write %s (%ld bytes)\n", + fprintf(stderr, "cannot write %s (%ld bytes)\n", dest_filename, st.st_size); else - say("Copied %s.\n", hex); + say("copy %s\n", hex); return status; } - fprintf(stderr, "No copy method was provided to copy %s.\n", hex); + fprintf(stderr, "failed to copy %s with given copy methods.\n", hex); return -1; } |