builtin/diff: convert to struct object_id
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
cd02599c48
commit
9c4b0f66aa
|
@ -21,7 +21,7 @@
|
||||||
#define DIFF_NO_INDEX_IMPLICIT 2
|
#define DIFF_NO_INDEX_IMPLICIT 2
|
||||||
|
|
||||||
struct blobinfo {
|
struct blobinfo {
|
||||||
unsigned char sha1[20];
|
struct object_id oid;
|
||||||
const char *name;
|
const char *name;
|
||||||
unsigned mode;
|
unsigned mode;
|
||||||
};
|
};
|
||||||
|
@ -31,22 +31,22 @@ static const char builtin_diff_usage[] =
|
||||||
|
|
||||||
static void stuff_change(struct diff_options *opt,
|
static void stuff_change(struct diff_options *opt,
|
||||||
unsigned old_mode, unsigned new_mode,
|
unsigned old_mode, unsigned new_mode,
|
||||||
const unsigned char *old_sha1,
|
const struct object_id *old_oid,
|
||||||
const unsigned char *new_sha1,
|
const struct object_id *new_oid,
|
||||||
int old_sha1_valid,
|
int old_oid_valid,
|
||||||
int new_sha1_valid,
|
int new_oid_valid,
|
||||||
const char *old_name,
|
const char *old_name,
|
||||||
const char *new_name)
|
const char *new_name)
|
||||||
{
|
{
|
||||||
struct diff_filespec *one, *two;
|
struct diff_filespec *one, *two;
|
||||||
|
|
||||||
if (!is_null_sha1(old_sha1) && !is_null_sha1(new_sha1) &&
|
if (!is_null_oid(old_oid) && !is_null_oid(new_oid) &&
|
||||||
!hashcmp(old_sha1, new_sha1) && (old_mode == new_mode))
|
!oidcmp(old_oid, new_oid) && (old_mode == new_mode))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (DIFF_OPT_TST(opt, REVERSE_DIFF)) {
|
if (DIFF_OPT_TST(opt, REVERSE_DIFF)) {
|
||||||
SWAP(old_mode, new_mode);
|
SWAP(old_mode, new_mode);
|
||||||
SWAP(old_sha1, new_sha1);
|
SWAP(old_oid, new_oid);
|
||||||
SWAP(old_name, new_name);
|
SWAP(old_name, new_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,8 +57,8 @@ static void stuff_change(struct diff_options *opt,
|
||||||
|
|
||||||
one = alloc_filespec(old_name);
|
one = alloc_filespec(old_name);
|
||||||
two = alloc_filespec(new_name);
|
two = alloc_filespec(new_name);
|
||||||
fill_filespec(one, old_sha1, old_sha1_valid, old_mode);
|
fill_filespec(one, old_oid->hash, old_oid_valid, old_mode);
|
||||||
fill_filespec(two, new_sha1, new_sha1_valid, new_mode);
|
fill_filespec(two, new_oid->hash, new_oid_valid, new_mode);
|
||||||
|
|
||||||
diff_queue(&diff_queued_diff, one, two);
|
diff_queue(&diff_queued_diff, one, two);
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ static int builtin_diff_b_f(struct rev_info *revs,
|
||||||
|
|
||||||
stuff_change(&revs->diffopt,
|
stuff_change(&revs->diffopt,
|
||||||
blob[0].mode, canon_mode(st.st_mode),
|
blob[0].mode, canon_mode(st.st_mode),
|
||||||
blob[0].sha1, null_sha1,
|
&blob[0].oid, &null_oid,
|
||||||
1, 0,
|
1, 0,
|
||||||
path, path);
|
path, path);
|
||||||
diffcore_std(&revs->diffopt);
|
diffcore_std(&revs->diffopt);
|
||||||
|
@ -114,7 +114,7 @@ static int builtin_diff_blobs(struct rev_info *revs,
|
||||||
|
|
||||||
stuff_change(&revs->diffopt,
|
stuff_change(&revs->diffopt,
|
||||||
blob[0].mode, blob[1].mode,
|
blob[0].mode, blob[1].mode,
|
||||||
blob[0].sha1, blob[1].sha1,
|
&blob[0].oid, &blob[1].oid,
|
||||||
1, 1,
|
1, 1,
|
||||||
blob[0].name, blob[1].name);
|
blob[0].name, blob[1].name);
|
||||||
diffcore_std(&revs->diffopt);
|
diffcore_std(&revs->diffopt);
|
||||||
|
@ -160,7 +160,7 @@ static int builtin_diff_tree(struct rev_info *revs,
|
||||||
struct object_array_entry *ent0,
|
struct object_array_entry *ent0,
|
||||||
struct object_array_entry *ent1)
|
struct object_array_entry *ent1)
|
||||||
{
|
{
|
||||||
const unsigned char *(sha1[2]);
|
const struct object_id *(oid[2]);
|
||||||
int swap = 0;
|
int swap = 0;
|
||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
|
@ -172,9 +172,9 @@ static int builtin_diff_tree(struct rev_info *revs,
|
||||||
*/
|
*/
|
||||||
if (ent1->item->flags & UNINTERESTING)
|
if (ent1->item->flags & UNINTERESTING)
|
||||||
swap = 1;
|
swap = 1;
|
||||||
sha1[swap] = ent0->item->oid.hash;
|
oid[swap] = &ent0->item->oid;
|
||||||
sha1[1 - swap] = ent1->item->oid.hash;
|
oid[1 - swap] = &ent1->item->oid;
|
||||||
diff_tree_sha1(sha1[0], sha1[1], "", &revs->diffopt);
|
diff_tree_sha1(oid[0]->hash, oid[1]->hash, "", &revs->diffopt);
|
||||||
log_tree_diff_flush(revs);
|
log_tree_diff_flush(revs);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -408,7 +408,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
|
||||||
} else if (obj->type == OBJ_BLOB) {
|
} else if (obj->type == OBJ_BLOB) {
|
||||||
if (2 <= blobs)
|
if (2 <= blobs)
|
||||||
die(_("more than two blobs given: '%s'"), name);
|
die(_("more than two blobs given: '%s'"), name);
|
||||||
hashcpy(blob[blobs].sha1, obj->oid.hash);
|
hashcpy(blob[blobs].oid.hash, obj->oid.hash);
|
||||||
blob[blobs].name = name;
|
blob[blobs].name = name;
|
||||||
blob[blobs].mode = entry->mode;
|
blob[blobs].mode = entry->mode;
|
||||||
blobs++;
|
blobs++;
|
||||||
|
|
Loading…
Reference in New Issue