view docs/usage/locking.rst @ 4546:805ec49152c9

simplehg: don't quiet Hg output for push I want to be able to see informational messages from e.g. the Hg Bugzilla extension. Here's output without the patch. This is identical to the output produced if the Bugzilla extension is disabled: remote: adding changesets remote: adding manifests remote: adding file changes remote: added 1 changesets with 1 changes to 1 files remote: Repository size .hg:158.2 kB repo:0 B total:158.2 kB remote: Last revision is now r324:6c03abbabb46 and with the patch: remote: adding changesets remote: adding manifests remote: adding file changes remote: added 1 changesets with 1 changes to 1 files remote: Repository size .hg:158.2 kB repo:0 B total:158.2 kB remote: Last revision is now r324:6c03abbabb46 remote: bug 3270 already knows about changeset 6c03abbabb46 The last line indicates that the Bugzilla bug text already contains an entry for that changeset. It's produced by a call to self.ui.status() in the extension. I think the point here is that the deleted code is ensuring that the remote hg (i.e. the Kallithea hg) always runs with the --quiet flag when receiving a push. This seems an arbitrary decision to me, and one that removes potentially useful information from the output. I believe this behaviour is different to that seen by the user if pushing to hgweb (I've not tried it, but inspected the hgweb source for setting quiet) and is certainly different to pushing over ssh.
author Jim Hague <jim.hague@acm.org>
date Thu, 17 Jul 2014 12:47:56 +0100
parents e73a69cb98dc
children 03bbd33bc084
line wrap: on
line source

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