Commit 8242cc1a23aba94c4a4d1082fc993ab5306814b6

Patrick Steinhardt 2017-04-04T18:18:45

repository: set error message if trying to set HEAD to a checked out one If trying to set the HEAD of a repository to another reference, we have to check whether this reference is already checked out in another linked work tree. If it is, we will refuse setting the HEAD and return an error, but do not set a meaningful error message. Add one.

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/src/repository.c b/src/repository.c
index 425ef79..900a15d 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -2562,6 +2562,8 @@ int git_repository_set_head(
 
 	if (ref && current->type == GIT_REF_SYMBOLIC && git__strcmp(current->target.symbolic, ref->name) &&
 	    git_reference_is_branch(ref) && git_branch_is_checked_out(ref)) {
+		giterr_set(GITERR_REPOSITORY, "cannot set HEAD to reference '%s' as it is the current HEAD "
+			"of a linked repository.", git_reference_name(ref));
 		error = -1;
 		goto cleanup;
 	}