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>maint
							parent
							
								
									7c3fd25dcf
								
							
						
					
					
						commit
						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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue