Commit Diff


commit - fda8017d0d1d1314b68ea9776bb563c2ea127f3e
commit + f179e66de44d3541fbbcf6be9a5bcc70465f0bc9
blob - 33605c9d4c23c5866ad26029575621e9dfba0237
blob + 1bf520b11e2220ac93d5ee4e22b8879d89fb8c1d
--- lib/worktree.c
+++ lib/worktree.c
@@ -1719,7 +1719,13 @@ get_file_status(unsigned char *status, struct stat *sb
 	}
 
 	if (!stat_info_differs(ie, sb))
+		goto done;
+
+	if (S_ISLNK(sb->st_mode) &&
+	    got_fileindex_entry_filetype_get(ie) != GOT_FILEIDX_MODE_SYMLINK) {
+		*status = GOT_STATUS_MODIFY;
 		goto done;
+	}
 
 	if (staged_status == GOT_STATUS_MODIFY ||
 	    staged_status == GOT_STATUS_ADD)