зеркало из https://github.com/microsoft/git.git
Make 'git fsck' complain about non-commit branches
Since having non-commits in branches is a no-no, and just means you cannot commit on them, let's make fsck tell you when a branch is bad. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
7c3fd25dcf
Коммит
6232f62bc7
|
@ -555,20 +555,23 @@ static int fsck_handle_reflog(const char *logname, const unsigned char *sha1, in
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int is_branch(const char *refname)
|
||||
{
|
||||
return !strcmp(refname, "HEAD") || !prefixcmp(refname, "refs/heads/");
|
||||
}
|
||||
|
||||
static int fsck_handle_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
|
||||
{
|
||||
struct object *obj;
|
||||
|
||||
obj = lookup_object(sha1);
|
||||
obj = parse_object(sha1);
|
||||
if (!obj) {
|
||||
if (has_sha1_file(sha1)) {
|
||||
default_refs++;
|
||||
return 0; /* it is in a pack */
|
||||
}
|
||||
error("%s: invalid sha1 pointer %s", refname, sha1_to_hex(sha1));
|
||||
/* We'll continue with the rest despite the error.. */
|
||||
return 0;
|
||||
}
|
||||
if (obj->type != OBJ_COMMIT && is_branch(refname))
|
||||
error("%s: not a commit", refname);
|
||||
default_refs++;
|
||||
obj->used = 1;
|
||||
mark_reachable(obj, REACHABLE);
|
||||
|
|
Загрузка…
Ссылка в новой задаче