|
|
|
@ -13,6 +13,7 @@
@@ -13,6 +13,7 @@
|
|
|
|
|
#include <sys/time.h> |
|
|
|
|
#include <signal.h> |
|
|
|
|
|
|
|
|
|
static int reset = 0; |
|
|
|
|
static int merge = 0; |
|
|
|
|
static int update = 0; |
|
|
|
|
static int index_only = 0; |
|
|
|
@ -419,6 +420,10 @@ static void verify_uptodate(struct cache_entry *ce)
@@ -419,6 +420,10 @@ static void verify_uptodate(struct cache_entry *ce)
|
|
|
|
|
return; |
|
|
|
|
errno = 0; |
|
|
|
|
} |
|
|
|
|
if (reset) { |
|
|
|
|
ce->ce_flags |= htons(CE_UPDATE); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (errno == ENOENT) |
|
|
|
|
return; |
|
|
|
|
die("Entry '%s' not uptodate. Cannot merge.", ce->name); |
|
|
|
@ -723,9 +728,12 @@ static int oneway_merge(struct cache_entry **src)
@@ -723,9 +728,12 @@ static int oneway_merge(struct cache_entry **src)
|
|
|
|
|
return deleted_entry(old, NULL); |
|
|
|
|
} |
|
|
|
|
if (old && same(old, a)) { |
|
|
|
|
struct stat st; |
|
|
|
|
if (lstat(old->name, &st) || ce_match_stat(old, &st, 1)) |
|
|
|
|
old->ce_flags |= htons(CE_UPDATE); |
|
|
|
|
if (reset) { |
|
|
|
|
struct stat st; |
|
|
|
|
if (lstat(old->name, &st) || |
|
|
|
|
ce_match_stat(old, &st, 1)) |
|
|
|
|
old->ce_flags |= htons(CE_UPDATE); |
|
|
|
|
} |
|
|
|
|
return keep_entry(old); |
|
|
|
|
} |
|
|
|
|
return merged_entry(a, NULL); |
|
|
|
@ -793,7 +801,7 @@ static struct cache_file cache_file;
@@ -793,7 +801,7 @@ static struct cache_file cache_file;
|
|
|
|
|
|
|
|
|
|
int main(int argc, char **argv) |
|
|
|
|
{ |
|
|
|
|
int i, newfd, reset, stage = 0; |
|
|
|
|
int i, newfd, stage = 0; |
|
|
|
|
unsigned char sha1[20]; |
|
|
|
|
merge_fn_t fn = NULL; |
|
|
|
|
|
|
|
|
|