doc/README
author Matt Harbison <matt_harbison@yahoo.com>
Thu, 12 Dec 2019 12:30:15 -0500
changeset 43913 4b7d5d10c45d
parent 9419 3516a4e877c1
permissions -rw-r--r--
exchange: ensure all outgoing subrepo references are present before pushing We've run into occasional problems with people committing a repo, and then amending or rebasing in the subrepo. That makes it so that the revision in the parent can't be checked out, and the problem gets propagated on push. Mercurial already tries to defend against this sort of dangling reference by pushing *all* subrepo revisions first. This reuses the checks that trigger warnings in `hg verify` to bail on the push unless using `--force`. I thought about putting this on the server side, but at that point, all of the data has been transferred, only to bail out. Additionally, SCM Manager hosts subrepos in a location that isn't nested in the parent, so normal subrepo code would complain that the subrepo is missing when run on the server. Because the push command pushes subrepos before calling this exchange code, a subrepo will be pushed before the parent is verified. Not great, but no dangling references are exchanged, so it solves the problem. This code isn't in the loop that pushes the subrepos because: 1) the list of outgoing revisions is needed to limit the scope of the check 2) the loop only accesses the current revision, and therefore can miss subrepos that were dropped in previous commits 3) this code is called when pushing a subrepo, so the protection is recursive I'm not sure if there's a cheap check for the list of files in the outgoing bundle. If there is, that would provide a fast path to bypass this check for people not using subrepos (or if no subrepo changes were made). There's probably also room for verifying other references like tags. But since that doesn't break checkouts, it's much less of a problem. Differential Revision: https://phab.mercurial-scm.org/D7616
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9172
bc1de09090bc doc: update README with links to Docutils
Martin Geisler <mg@lazybytes.net>
parents: 5048
diff changeset
     1
Mercurial's documentation is kept in reStructuredText format, which is
bc1de09090bc doc: update README with links to Docutils
Martin Geisler <mg@lazybytes.net>
parents: 5048
diff changeset
     2
a simple plain text format that's easy to read and edit:
177
91055f795d88 adding doc directory and files
jake@edge2.net
parents:
diff changeset
     3
9172
bc1de09090bc doc: update README with links to Docutils
Martin Geisler <mg@lazybytes.net>
parents: 5048
diff changeset
     4
  http://docutils.sourceforge.net/rst.html
177
91055f795d88 adding doc directory and files
jake@edge2.net
parents:
diff changeset
     5
9172
bc1de09090bc doc: update README with links to Docutils
Martin Geisler <mg@lazybytes.net>
parents: 5048
diff changeset
     6
It's also convertible to a variety of other formats including standard
9419
3516a4e877c1 doc/README: simplify instructions
Martin Geisler <mg@lazybytes.net>
parents: 9406
diff changeset
     7
UNIX man page format and HTML. You'll need to install Docutils:
177
91055f795d88 adding doc directory and files
jake@edge2.net
parents:
diff changeset
     8
9172
bc1de09090bc doc: update README with links to Docutils
Martin Geisler <mg@lazybytes.net>
parents: 5048
diff changeset
     9
  http://docutils.sourceforge.net/
177
91055f795d88 adding doc directory and files
jake@edge2.net
parents:
diff changeset
    10
9172
bc1de09090bc doc: update README with links to Docutils
Martin Geisler <mg@lazybytes.net>
parents: 5048
diff changeset
    11
Use the Makefile in this directory to generate the man and HTML pages.