Finally, at work all other teams gave up Subversion and migrated to git.
The migration went pretty smooth thanks to git svn
and a couple of bash scripts,
which made sure tags and branches were transferred correctly.
After the migration had been finished, I wanted to shutdown the inherited Subversion server for good - but, I was told to keep it running in read-only mode - for reasons.
Ok, can’t be too hard, right?
A quick search in my favorite search engine revealed some promising hits, e.g. https://stackoverflow.com/a/2411347/672833.
# give everyone read-only access to the entire repository
[reponame:/]
* = r
Though, there was something different.
All the solutions I found on the web were about configuring Subversion itself,
but on our Subversion server access was managed via Apache,
via Limit
, LimitExcept
and a bunch of methods/HTTP-verbs I never saw before,
e.g. PROPFIND
, REPORT
…
Thanks to the extensive Apache configuration I quickly found out
that Limit
limits access and LimitExcept
removes the restriction for the configured methods.
Dead simple - except - what the hell is PROPFIND
and co and how do these methods map to actions in Subversion?
I directly searched for these verbs and found one page (German), which showed an example on how to restrict write access - bingo!
# Authorization: Authenticated users only for non-read-only
# (write) operations; allow anonymous reads
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
Though, again, there was no explanation about what the methods mean.
Usually, I really like to dig deep and fully understand what I am doing, but here we had an ancient technology, combined with a webserver which I do not use…
So I called it a day and updated the configuration…
# deny write access for all
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require all denied
</LimitExcept>
As you can see, I only allowed an exception for - nobody.
After I applied the changes, I verified both the working read-access and the no longer working write-access manually.
If you know more about this topic, or a better solution, do not hesitate to contact me.