fast-import: add support to delete refs
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
9193f74235
commit
4ee1b225b9
@ -248,6 +248,7 @@ struct branch {
|
||||
uintmax_t last_commit;
|
||||
uintmax_t num_notes;
|
||||
unsigned active : 1;
|
||||
unsigned delete : 1;
|
||||
unsigned pack_id : PACK_ID_BITS;
|
||||
unsigned char sha1[20];
|
||||
};
|
||||
@ -1681,10 +1682,13 @@ static int update_branch(struct branch *b)
|
||||
struct ref_lock *lock;
|
||||
unsigned char old_sha1[20];
|
||||
|
||||
if (is_null_sha1(b->sha1))
|
||||
return 0;
|
||||
if (read_ref(b->name, old_sha1))
|
||||
hashclr(old_sha1);
|
||||
if (is_null_sha1(b->sha1)) {
|
||||
if (b->delete)
|
||||
delete_ref(b->name, old_sha1, 0);
|
||||
return 0;
|
||||
}
|
||||
lock = lock_any_ref_for_update(b->name, old_sha1, 0, NULL);
|
||||
if (!lock)
|
||||
return error("Unable to lock %s", b->name);
|
||||
@ -2611,8 +2615,11 @@ static int parse_from(struct branch *b)
|
||||
free(buf);
|
||||
} else
|
||||
parse_from_existing(b);
|
||||
} else if (!get_sha1(from, b->sha1))
|
||||
} else if (!get_sha1(from, b->sha1)) {
|
||||
parse_from_existing(b);
|
||||
if (is_null_sha1(b->sha1))
|
||||
b->delete = 1;
|
||||
}
|
||||
else
|
||||
die("Invalid ref name or SHA1 expression: %s", from);
|
||||
|
||||
|
Reference in New Issue
Block a user