view mercurial/help/hg-ssh.8.txt @ 40626:87a872555e90

revlog: detect incomplete revlog reads _readsegment() is supposed to return N bytes of revlog revision data starting at a file offset. Surprisingly, its behavior before this patch never verified that it actually read and returned N bytes! Instead, it would perform the read(), then return whatever data was available. And even more surprisingly, nothing in the call chain appears to have been validating that it received all the data it was expecting. This behavior could lead to partial or incomplete revision chunks being operated on. This could result in e.g. cached deltas being applied against incomplete base revisions. The delta application process would happily perform this operation. Only hash verification would detect the corruption and save us. This commit changes the behavior of raw revlog reading to validate that we actually read() the number of bytes that were requested. We will raise a more specific error faster, rather than possibly have it go undetected or manifest later in the call stack, at delta application or hash verification. Differential Revision: https://phab.mercurial-scm.org/D5266
author Gregory Szorc <gregory.szorc@gmail.com>
date Tue, 13 Nov 2018 12:30:59 -0800
parents 4e934804cafe
children
line wrap: on
line source

========
 hg-ssh
========

----------------------------------------
restricted ssh login shell for Mercurial
----------------------------------------

:Author:         Thomas Arendsen Hein <thomas@intevation.de>
:Organization:   Mercurial
:Manual section: 8
:Manual group:   Mercurial Manual

.. contents::
   :backlinks: top
   :class: htmlonly
   :depth: 1

Synopsis
""""""""
**hg-ssh** repositories...

Description
"""""""""""
**hg-ssh** is a wrapper for ssh access to a limited set of mercurial repos.

To be used in ~/.ssh/authorized_keys with the "command" option, see sshd(8):
command="hg-ssh path/to/repo1 /path/to/repo2 ~/repo3 ~user/repo4" ssh-dss ...
(probably together with these other useful options:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding)

This allows pull/push over ssh from/to the repositories given as arguments.

If all your repositories are subdirectories of a common directory, you can
allow shorter paths with:
command="cd path/to/my/repositories && hg-ssh repo1 subdir/repo2"

You can use pattern matching of your normal shell, e.g.:
command="cd repos && hg-ssh user/thomas/* projects/{mercurial,foo}"

You can also add a --read-only flag to allow read-only access to a key, e.g.:
command="hg-ssh --read-only repos/\*"

Bugs
""""
Probably lots, please post them to the mailing list (see Resources_
below) when you find them.

See Also
""""""""
|hg(1)|_

Author
""""""
Written by Matt Mackall <mpm@selenic.com>

Resources
"""""""""
Main Web Site: https://mercurial-scm.org/

Source code repository: https://www.mercurial-scm.org/repo/hg

Mailing list: https://www.mercurial-scm.org/mailman/listinfo/mercurial/

Copying
"""""""
Copyright (C) 2005-2016 Matt Mackall.
Free use of this software is granted under the terms of the GNU General
Public License version 2 or any later version.

.. include:: common.txt