Turns out Git provides an error message either way (checked out as {git,git_p4}, updated as {git_p4,git}). I think the messages are sufficient for a user to figure out that the dependency has gotten into a broken state due to some improper change.