X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=merge-cache.c;h=11079b1cda9c50856a636a19bc41204903f1b522;hb=c983370e5e208cca4deda82184478ba445a156e6;hp=68ac4ab2d926005a5a729017c1bcb70a30634bd8;hpb=e3b4be7f6c31d85b5f6abc42bd24d61bce5027b4;p=git.git diff --git a/merge-cache.c b/merge-cache.c index 68ac4ab2..11079b1c 100644 --- a/merge-cache.c +++ b/merge-cache.c @@ -4,7 +4,7 @@ #include "cache.h" static const char *pgm = NULL; -static const char *arguments[5]; +static const char *arguments[8]; static void run_program(void) { @@ -18,6 +18,9 @@ static void run_program(void) arguments[2], arguments[3], arguments[4], + arguments[5], + arguments[6], + arguments[7], NULL); die("unable to execute '%s'", pgm); } @@ -36,9 +39,13 @@ static int merge_entry(int pos, const char *path) arguments[2] = ""; arguments[3] = ""; arguments[4] = path; + arguments[5] = ""; + arguments[6] = ""; + arguments[7] = ""; found = 0; do { static char hexbuf[4][60]; + static char ownbuf[4][60]; struct cache_entry *ce = active_cache[pos]; int stage = ce_stage(ce); @@ -46,7 +53,9 @@ static int merge_entry(int pos, const char *path) break; found++; strcpy(hexbuf[stage], sha1_to_hex(ce->sha1)); + sprintf(ownbuf[stage], "%o", ntohl(ce->ce_mode) & (~S_IFMT)); arguments[stage] = hexbuf[stage]; + arguments[stage + 4] = ownbuf[stage]; } while (++pos < active_nr); if (!found) die("merge-cache: %s not in the cache", path);