Files @ 6cb077e99873
Branch filter:

Location: kallithea/docs/usage/locking.rst - annotation

6cb077e99873 1.3 KiB text/prs.fallenstein.rst Show Source Show as Raw Download as Raw
Mads Kiilerich
diff: rename template values for org and other for compare and PR

sed -i -e 's,\<\(c\.\(default_\)\?\)org_,\1a_,g' -e 's,\<\(c\.\(default_\)\?\)other_,\1cs_,g' kallithea/controllers/compare.py kallithea/templates/compare/compare_cs.html kallithea/templates/compare/compare_diff.html
sed -i -e 's,\<\(c\.\(default_\)\?\)org_,\1cs_,g' -e 's,\<\(c\.\(default_\)\?\)other_,\1a_,g' kallithea/controllers/pullrequests.py kallithea/templates/pullrequests/pullrequest.html kallithea/templates/pullrequests/pullrequest_show.html kallithea/templates/changeset/diff_block.html

Renaming it differently for compare and PR finally fixes some issues with diffs
and links pointing at wrong revisions and repos - no more whac-a-mole.
.. _locking:

===================================
Kallithea repository locking system
===================================


| Repos with **locking function=disabled** is the default, that's how repos work
  today.
| Repos with **locking function=enabled** behaves like follows:

Repos have a state called `locked` that can be true or false.
The hg/git commands `hg/git clone`, `hg/git pull`, and `hg/git push`
influence this state:

- The command `hg/git pull <repo>` will lock that repo (locked=true)
  if the user has write/admin permissions on this repo

- The command `hg/git clone <repo>` will lock that repo (locked=true) if the
  user has write/admin permissions on this repo


Kallithea will remember the user id who locked the repo
only this specific user can unlock the repo (locked=false) by calling

- `hg/git push <repo>`

every other command on that repo from this user and
every command from any other user will result in http return code 423 (locked)


additionally the http error includes the <user> that locked the repo
(e.g. “repository <repo> locked by user <user>”)


So the scenario of use for repos with `locking function` enabled is that
every initial clone and every pull gives users (with write permission)
the exclusive right to do a push.


Each repo can be manually unlocked by admin from the repo settings menu.