Mercurial > hg
annotate hgweb.cgi @ 35058:a68c3420be41
rebase: exclude descendants of obsoletes w/o a successor in dest (issue5300)
.. feature::
Let 'hg rebase' avoid content-divergence by skipping obsolete
changesets (and their descendants) when they are present in the rebase
set along with one of their successors but none of their successors is
in destination.
In the following example, when trying to rebase 3:: onto 2, the rebase
will abort with "this rebase will cause divergence from: 4":
o 7 f
|
| o 6 e
| |
| o 5 d'
| |
x | 4 d (rewritten as 5)
|/
o 3 c
|
| o 2 x
| |
o | 1 b
|/
o 0 a
By excluding obsolete changesets without a successor in destination (4
in the example above) and their descendants, we make rebase work in this
case, thus giving:
o 11 e
|
o 10 d'
|
o 9 c
|
o 8 b
|
| o 7 f
| |
| | x 6 e (rewritten using rebase as 11)
| | |
| | x 5 d' (rewritten using rebase as 10)
| | |
| x | 4 d
| |/
| x 3 c (rewritten using rebase as 9)
| |
o | 2 x
| |
| x 1 b (rewritten using rebase as 8)
|/
o 0 a
where branch 4:: is left behind while branch 5:: is rebased as expected.
The rationale is that users may not be interested in rebasing orphan
changesets when specifying a rebase set that include them but would
still want "stable" ones to be rebased. Currently, the user is suggested
to allow divergence (but probably does not want it) or they must specify
a rebase set excluding problematic changesets (which might be a bit
cumbersome). The approach proposed here corresponds to "Option 2" in
https://www.mercurial-scm.org/wiki/CEDRebase.
We extend _computeobsoletenotrebased() so that it also return a set of
obsolete changesets in rebase set without a successor in destination but
with at least one successor in rebase set. This
'obsoletewithoutsuccessorindestination' is then stored as an attribute
of rebaseruntime and used in _performrebasesubset() to:
* filter out descendants of these changesets from the revisions to
rebase;
* issue a message about these revisions being skipped.
This only occurs if 'evolution.allowdivergence' option is off and
'rebaseskipobsolete' is on.
author | Denis Laxalde <denis@laxalde.org> |
---|---|
date | Tue, 14 Nov 2017 22:46:10 +0100 |
parents | 4b0fc75f9403 |
children | 47ef023d0165 |
rev | line source |
---|---|
202 | 1 #!/usr/bin/env python |
159 | 2 # |
11000
338167735124
hgweb: simplify hgweb.cgi, add help pointer
Matt Mackall <mpm@selenic.com>
parents:
6142
diff
changeset
|
3 # An example hgweb CGI script, edit as necessary |
26421
4b0fc75f9403
urls: bulk-change primary website URLs
Matt Mackall <mpm@selenic.com>
parents:
15475
diff
changeset
|
4 # See also https://mercurial-scm.org/wiki/PublishingRepositories |
159 | 5 |
11000
338167735124
hgweb: simplify hgweb.cgi, add help pointer
Matt Mackall <mpm@selenic.com>
parents:
6142
diff
changeset
|
6 # Path to repo or hgweb config to serve (see 'hg help hgweb') |
338167735124
hgweb: simplify hgweb.cgi, add help pointer
Matt Mackall <mpm@selenic.com>
parents:
6142
diff
changeset
|
7 config = "/path/to/repo/or/config" |
5244
79279b5583c6
cgi: sys.path.insert should be before importing mercurial
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5197
diff
changeset
|
8 |
15475
85cba926cb59
hgweb: add hint about finding library path with debuginstall
Matt Mackall <mpm@selenic.com>
parents:
11503
diff
changeset
|
9 # Uncomment and adjust if Mercurial is not installed system-wide |
85cba926cb59
hgweb: add hint about finding library path with debuginstall
Matt Mackall <mpm@selenic.com>
parents:
11503
diff
changeset
|
10 # (consult "installed modules" path from 'hg debuginstall'): |
11000
338167735124
hgweb: simplify hgweb.cgi, add help pointer
Matt Mackall <mpm@selenic.com>
parents:
6142
diff
changeset
|
11 #import sys; sys.path.insert(0, "/path/to/python/lib") |
5197
55860a45bbf2
Enable demandimport only in scripts, not in importable modules (issue605)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3868
diff
changeset
|
12 |
6080
4baad19c4801
hgweb: disable cgitb by default
Maxim Dounin <mdounin@mdounin.ru>
parents:
5995
diff
changeset
|
13 # Uncomment to send python tracebacks to the browser if an error occurs: |
11000
338167735124
hgweb: simplify hgweb.cgi, add help pointer
Matt Mackall <mpm@selenic.com>
parents:
6142
diff
changeset
|
14 #import cgitb; cgitb.enable() |
391
5f65a108a559
hgweb: pull cgitb into CGI script example, where it can easily be disabled
mpm@selenic.com
parents:
202
diff
changeset
|
15 |
11000
338167735124
hgweb: simplify hgweb.cgi, add help pointer
Matt Mackall <mpm@selenic.com>
parents:
6142
diff
changeset
|
16 from mercurial import demandimport; demandimport.enable() |
338167735124
hgweb: simplify hgweb.cgi, add help pointer
Matt Mackall <mpm@selenic.com>
parents:
6142
diff
changeset
|
17 from mercurial.hgweb import hgweb, wsgicgi |
338167735124
hgweb: simplify hgweb.cgi, add help pointer
Matt Mackall <mpm@selenic.com>
parents:
6142
diff
changeset
|
18 application = hgweb(config) |
6141
90e5c82a3859
Backed out changeset b913d3aacddc (see issue971/msg5317)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
5995
diff
changeset
|
19 wsgicgi.launch(application) |