diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-18 14:17:58 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-18 14:17:58 -0700 |
commit | e3b4be7f6c31d85b5f6abc42bd24d61bce5027b4 (patch) | |
tree | a1fc4f22ab9c7065f86046a81716ada8f9df5080 /merge-cache.c | |
parent | 3407bb4940c25ca67c846a48ef2c2c60c02178e0 (diff) | |
download | git-e3b4be7f6c31d85b5f6abc42bd24d61bce5027b4.tar.gz git-e3b4be7f6c31d85b5f6abc42bd24d61bce5027b4.tar.xz |
Change merge-cache and git-merge-one-file to use the SHA1 of the file
instead of a checked-out temporary copy.
If merging requires a checked-out-copy, we now do so with "unpack-file".
Diffstat (limited to 'merge-cache.c')
-rw-r--r-- | merge-cache.c | 27 |
1 files changed, 3 insertions, 24 deletions
diff --git a/merge-cache.c b/merge-cache.c index 3aa391be0..68ac4ab2d 100644 --- a/merge-cache.c +++ b/merge-cache.c @@ -25,29 +25,6 @@ static void run_program(void) die("merge program failed"); } -static char *create_temp_file(int stage, unsigned char *sha1) -{ - static char template[4][50]; - char *path = template[stage]; - void *buf; - char type[100]; - unsigned long size; - int fd; - - buf = read_sha1_file(sha1, type, &size); - if (!buf || strcmp(type, "blob")) - die("unable to read blob object %s", sha1_to_hex(sha1)); - - strcpy(path, ".merge_file_XXXXXX"); - fd = mkstemp(path); - if (fd < 0) - die("unable to create temp-file"); - if (write(fd, buf, size) != size) - die("unable to write temp-file"); - close(fd); - return path; -} - static int merge_entry(int pos, const char *path) { int found; @@ -61,13 +38,15 @@ static int merge_entry(int pos, const char *path) arguments[4] = path; found = 0; do { + static char hexbuf[4][60]; struct cache_entry *ce = active_cache[pos]; int stage = ce_stage(ce); if (strcmp(ce->name, path)) break; found++; - arguments[stage] = create_temp_file(stage, ce->sha1); + strcpy(hexbuf[stage], sha1_to_hex(ce->sha1)); + arguments[stage] = hexbuf[stage]; } while (++pos < active_nr); if (!found) die("merge-cache: %s not in the cache", path); |