Daniel Barkalow <barkalow@xxxxxxxxxxxx> writes: > Report a non-fatal error, mark in the index that that entry is not > reflected in the working directory, and allow the user to manipulate it > with commands that don't really need the working directory content. > > $ git checkout origin/master > Warning: couldn't create 't/t5100/nul' in your working directory; ignoring > working directory for this filename. > $ git mv t/t5100/nul t/t5100/nul-plain > $ ls t/t5100/nul-plain > t/t5100/nul-plain > > The working directory doesn't really have to be absolutely vital to git's > functioning (of course, the project you've checked out is going to have > problems unless you fix things). In particular, it should be possible, on > a machine with a broken filesystem, to modify a project that triggers the > filesystem breakage to not trigger it,... Now that is somebody who thinks before types. Marking that the filesystem does not match what's in index is already done, so you could argue that an alternative would be not to stop in the middle of checkout_entry() loop and instead check out as much as we could, write out the index perhaps, and signal error, _AFTER_ updating everything else, including the HEAD. We try to be atomic when able (e.g. on a broken patch, "apply" does not apply early half the patch and fail but rejects the whole thing), but checkout_entry() loop is not something you can sanely make atomic (it needs to first remove existing files and even directories before writing new files), so that alternative approach might be easier to work with. Care to follow it up with a patch? -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html