Commit Diff


commit - 2b4402a2eb769abead4dd3371af94390722b5c3c
commit + 4df642d96698f559d3c086843ecd7c411f9963aa
blob - 15d2c6083462f17fe66488835d99a0fdafacd063
blob + 874712f177a4a427bd773e1ed642c3c96a8c85cf
--- include/got_refs.h
+++ include/got_refs.h
@@ -41,6 +41,7 @@ struct got_reference {
 #define GOT_REF_HEAD		"HEAD"
 #define GOT_REF_ORIG_HEAD	"ORIG_HEAD"
 #define GOT_REF_MERGE_HEAD	"MERGE_HEAD"
+#define GOT_REF_FETCH_HEAD	"FETCH_HEAD"
 
 const struct got_error *
 got_ref_open(struct got_reference **, const char *, const char *);
blob - 027227957542ba934c06656d05c21772958bf4ac
blob + f96d8386ea1f6ce81118440eab08d45a8edae8dd
--- lib/repository.c
+++ lib/repository.c
@@ -29,10 +29,13 @@
 #define GOT_GIT_DIR	".git"
 
 /* Mandatory files and directories inside the git directory. */
-#define GOT_OBJECTS_DIR	"objects"
-#define GOT_REFS_DIR	"refs"
-#define GOT_HEAD_FILE	"HEAD"
+#define GOT_OBJECTS_DIR		"objects"
+#define GOT_REFS_DIR		"refs"
+#define GOT_HEAD_FILE		"HEAD"
 
+#define GOT_FETCH_HEAD_FILE	"FETCH_HEAD"
+#define GOT_ORIG_HEAD_FILE	"ORIG_HEAD"
+
 static char *
 get_path_git_dir(struct got_repository *repo)
 {
@@ -138,7 +141,10 @@ got_repo_get_reference(struct got_reference **ref,
 	char *path_refs;
 
 	/* Some refs live in the .git directory. */
-	if (strcmp(refname, GOT_REF_HEAD) == 0)
+	if (strcmp(refname, GOT_REF_HEAD) == 0 ||
+	    strcmp(refname, GOT_REF_ORIG_HEAD) == 0 ||
+	    strcmp(refname, GOT_REF_MERGE_HEAD) == 0 ||
+	    strcmp(refname, GOT_REF_FETCH_HEAD) == 0)
 		path_refs = get_path_git_dir(repo);
 	else
 		path_refs = get_path_refs(repo);