Files @ 805ec49152c9
Branch filter:

Location: kallithea/docs/usage/locking.rst

805ec49152c9 1.3 KiB text/prs.fallenstein.rst Show Annotation Show as Raw Download as Raw
Jim Hague
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.
.. _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.