view docs/usage/locking.rst @ 4128:bbbb013a0e94 rhodecode-2.2.5-gpl

Import some of the files from Select2 3.5.0 Javascript system. RhodeCode 2.2.5 used a version of Select2. Herein, we bring into Kallithea only a few files directly from Select2 3.5.0 (6ef7155) upstream, using the commands indicated below: (cd /tmp; \ git clone https://github.com/ivaynberg/select2.git; \ cd select2; \ git checkout 3.5.0 \ ) mkdir rhodecode/public/js/select2 cp -pa /tmp/select2/select2.{js,css,png} rhodecode/public/js/select2/ cp -pa /tmp/select2/select2x2.png rhodecode/public/js/select2/ cp -pa /tmp/select2/select2-spinner.gif rhodecode/public/js/select2/ hg add rhodecode/public/js/select2/
author Bradley M. Kuhn <bkuhn@sfconservancy.org>
date Fri, 16 May 2014 18:07:12 -0400
parents 8b8edfc25856
children e73a69cb98dc
line wrap: on
line source

.. _locking:

===================================
RhodeCode 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


RhodeCode 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.