Commit Diff


commit - 3c5b70f243d342b665371bd2991eef14cee5a38a
commit + d70b8e30048dfb40e323d6998034d9033152a0f7
blob - fec08d6e7aa2616d656e927be6b0417754d3c805
blob + 1041ba9f746d2e50dbc3151ae17cbe88466e5719
--- got/got.c
+++ got/got.c
@@ -276,7 +276,7 @@ cmd_checkout(int argc, char *argv[])
 		goto done;
 
 	error = got_worktree_init(worktree_path, head_ref, path_prefix, repo);
-	if (error != NULL)
+	if (error != NULL && !(error->code == GOT_ERR_ERRNO && errno == EEXIST))
 		goto done;
 
 	error = got_worktree_open(&worktree, worktree_path);
blob - 7329316b310613cfdcacbc4879f7c0c512fd3aa4
blob + 70d2944f783fc2d8612eab23dfb9e6774ce204ac
--- lib/worktree.c
+++ lib/worktree.c
@@ -426,6 +426,9 @@ add_file_on_disk(struct got_worktree *worktree, struct
 			} else if (!S_ISREG(sb.st_mode)) {
 				/* TODO file is obstructed; do something */
 				err = got_error(GOT_ERR_FILE_OBSTRUCTED);
+			} else {
+				/* TODO: Merge the file! */
+				return NULL;
 			}
 		}
 		return err;