[[!comment format=mdwn username="joey" subject="""comment 3""" date="2018-02-22T17:27:06Z" content=""" There are situations where a git command that appears to be read-only, such as `git status` actually writes to the repository behind the scenes. It looks like git ignores write errors in at least some such cases. So there is precident for implicit read-only support, but I think not in cases where it would involve significant behavior changes, like it would for the git-annex branch auto-merging. In git's case the behavior change probably only involves repeated `git status` runs being slower than otherwise, or something like that. As well as populating the .git/annex/index file with information merged in from recently fetched git-annex branches, git-annex may need to write to other files in order to prepare caches needed to perform what appears to be "read-only" query operation, or to lock files in order to prevent someone who does have write access from dropping them in a situation where that will lose data. An example of the latter is running `git annex drop` in a repository you do have write access to, and it needing to exclusively lock files in origin, which requires write access to origin as well. Without write access, the drop may fail. The --read-only flag seems to be setting up a situation where git-annex handles some things being read-only, but then someone expects the flag to make some other thing work read-only, which git-annex can't manage to support for whatever reason. So I prefer a more specific name, like annex.merge-annex-branches=false. Implemented that. """]]