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