diff --git a/.hgsigs b/.hgsigs index 167901946d21b4425a6c537b493eaafc4e0f5c08_Lmhnc2lncw==..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_Lmhnc2lncw== 100644 --- a/.hgsigs +++ b/.hgsigs @@ -201,3 +201,4 @@ 28163c5de797e5416f9b588940f4608269b4d50a 0 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 diff --git a/.hgtags b/.hgtags index 167901946d21b4425a6c537b493eaafc4e0f5c08_LmhndGFncw==..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_LmhndGFncw== 100644 --- a/.hgtags +++ b/.hgtags @@ -261,3 +261,4 @@ 28163c5de797e5416f9b588940f4608269b4d50a 5.5rc0 7fc3c5fbc65f6fe85d70ea63923b8767dda4f2e0 5.5 f62bb5d07848ca598aa860a517394130b61bf2ee 5.5.1 +07731064ac41dacdf0ec869ebd05c2e848c14fbf 5.5.2 diff --git a/contrib/genosxversion.py b/contrib/genosxversion.py index 167901946d21b4425a6c537b493eaafc4e0f5c08_Y29udHJpYi9nZW5vc3h2ZXJzaW9uLnB5..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_Y29udHJpYi9nZW5vc3h2ZXJzaW9uLnB5 100755 --- a/contrib/genosxversion.py +++ b/contrib/genosxversion.py @@ -6,9 +6,14 @@ import subprocess import sys -# Always load hg libraries from the hg we can find on $PATH. -hglib = subprocess.check_output(['hg', 'debuginstall', '-T', '{hgmodules}']) -sys.path.insert(0, os.path.dirname(hglib)) +try: + # Always load hg libraries from the hg we can find on $PATH. + hglib = subprocess.check_output(['hg', 'debuginstall', '-T', '{hgmodules}']) + sys.path.insert(0, os.path.dirname(hglib)) +except subprocess.CalledProcessError: + # We're probably running with a PyOxidized Mercurial, so just + # proceed and hope it works out okay. + pass from mercurial import util diff --git a/contrib/hgweb.fcgi b/contrib/hgweb.fcgi index 167901946d21b4425a6c537b493eaafc4e0f5c08_Y29udHJpYi9oZ3dlYi5mY2dp..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_Y29udHJpYi9oZ3dlYi5mY2dp 100755 --- a/contrib/hgweb.fcgi +++ b/contrib/hgweb.fcgi @@ -3,7 +3,7 @@ # An example FastCGI script for use with flup, edit as necessary # Path to repo or hgweb config to serve (see 'hg help hgweb') -config = "/path/to/repo/or/config" +config = b"/path/to/repo/or/config" # Uncomment and adjust if Mercurial is not installed system-wide # (consult "installed modules" path from 'hg debuginstall'): diff --git a/contrib/hgweb.wsgi b/contrib/hgweb.wsgi index 167901946d21b4425a6c537b493eaafc4e0f5c08_Y29udHJpYi9oZ3dlYi53c2dp..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_Y29udHJpYi9oZ3dlYi53c2dp 100644 --- a/contrib/hgweb.wsgi +++ b/contrib/hgweb.wsgi @@ -2,7 +2,7 @@ # See https://mercurial-scm.org/wiki/modwsgi for more information # Path to repo or hgweb config to serve (see 'hg help hgweb') -config = "/path/to/repo/or/config" +config = b"/path/to/repo/or/config" # Uncomment and adjust if Mercurial is not installed system-wide # (consult "installed modules" path from 'hg debuginstall'): diff --git a/hgdemandimport/__init__.py b/hgdemandimport/__init__.py index 167901946d21b4425a6c537b493eaafc4e0f5c08_aGdkZW1hbmRpbXBvcnQvX19pbml0X18ucHk=..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_aGdkZW1hbmRpbXBvcnQvX19pbml0X18ucHk= 100644 --- a/hgdemandimport/__init__.py +++ b/hgdemandimport/__init__.py @@ -46,8 +46,9 @@ # setuptools' pkg_resources.py expects "from __main__ import x" to # raise ImportError if x not defined '__main__', + '_ast', # https://bugs.python.org/issue41631 '_ssl', # conditional imports in the stdlib, issue1964 '_sre', # issue4920 'rfc822', 'mimetools', 'sqlalchemy.events', # has import-time side effects (issue5085) @@ -49,8 +50,9 @@ '_ssl', # conditional imports in the stdlib, issue1964 '_sre', # issue4920 'rfc822', 'mimetools', 'sqlalchemy.events', # has import-time side effects (issue5085) + 'sqlalchemy.dialects', # similar problems as above # setuptools 8 expects this module to explode early when not on windows 'distutils.msvc9compiler', '__builtin__', diff --git a/hgext/strip.py b/hgext/strip.py index 167901946d21b4425a6c537b493eaafc4e0f5c08_aGdleHQvc3RyaXAucHk=..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_aGdleHQvc3RyaXAucHk= 100644 --- a/hgext/strip.py +++ b/hgext/strip.py @@ -254,7 +254,7 @@ # only reset the dirstate for files that would actually change # between the working context and uctx - descendantrevs = repo.revs(b"%d::.", uctx.rev()) + descendantrevs = repo.revs(b"only(., %d)", uctx.rev()) changedfiles = [] for rev in descendantrevs: # blindly reset the files, regardless of what actually changed diff --git a/hgweb.cgi b/hgweb.cgi index 167901946d21b4425a6c537b493eaafc4e0f5c08_aGd3ZWIuY2dp..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_aGd3ZWIuY2dp 100755 --- a/hgweb.cgi +++ b/hgweb.cgi @@ -4,7 +4,7 @@ # See also https://mercurial-scm.org/wiki/PublishingRepositories # Path to repo or hgweb config to serve (see 'hg help hgweb') -config = "/path/to/repo/or/config" +config = b"/path/to/repo/or/config" # Uncomment and adjust if Mercurial is not installed system-wide # (consult "installed modules" path from 'hg debuginstall'): diff --git a/mercurial/dagop.py b/mercurial/dagop.py index 167901946d21b4425a6c537b493eaafc4e0f5c08_bWVyY3VyaWFsL2RhZ29wLnB5..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_bWVyY3VyaWFsL2RhZ29wLnB5 100644 --- a/mercurial/dagop.py +++ b/mercurial/dagop.py @@ -17,6 +17,7 @@ node, patch, pycompat, + scmutil, smartset, ) @@ -90,7 +91,7 @@ visitheap = [] def addvisit(fctx): - rev = fctx.rev() + rev = scmutil.intrev(fctx) if rev not in visit: visit[rev] = set() heapq.heappush(visitheap, -rev) # max heap diff --git a/mercurial/error.py b/mercurial/error.py index 167901946d21b4425a6c537b493eaafc4e0f5c08_bWVyY3VyaWFsL2Vycm9yLnB5..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_bWVyY3VyaWFsL2Vycm9yLnB5 100644 --- a/mercurial/error.py +++ b/mercurial/error.py @@ -73,7 +73,10 @@ from .node import short name = short(name) - RevlogError.__init__(self, b'%s@%s: %s' % (index, name, message)) + # if name is a binary node, it can be None + RevlogError.__init__( + self, b'%s@%s: %s' % (index, pycompat.bytestr(name), message) + ) def __bytes__(self): return RevlogError.__bytes__(self) diff --git a/mercurial/logcmdutil.py b/mercurial/logcmdutil.py index 167901946d21b4425a6c537b493eaafc4e0f5c08_bWVyY3VyaWFsL2xvZ2NtZHV0aWwucHk=..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_bWVyY3VyaWFsL2xvZ2NtZHV0aWwucHk= 100644 --- a/mercurial/logcmdutil.py +++ b/mercurial/logcmdutil.py @@ -753,7 +753,7 @@ fcache = {} def filematcher(ctx): - return scmutil.matchfiles(repo, fcache.get(ctx.rev(), [])) + return scmutil.matchfiles(repo, fcache.get(scmutil.intrev(ctx), [])) def revgen(): for rev, cs in dagop.filectxancestors(fctxs, followfirst=followfirst): diff --git a/mercurial/repoview.py b/mercurial/repoview.py index 167901946d21b4425a6c537b493eaafc4e0f5c08_bWVyY3VyaWFsL3JlcG92aWV3LnB5..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_bWVyY3VyaWFsL3JlcG92aWV3LnB5 100644 --- a/mercurial/repoview.py +++ b/mercurial/repoview.py @@ -62,6 +62,19 @@ rev = cl.index.get_rev pinned.update(rev(t[0]) for t in tags.values()) pinned.discard(None) + + # Avoid cycle: mercurial.filemerge -> mercurial.templater -> + # mercurial.templatefuncs -> mercurial.revset -> mercurial.repoview -> + # mercurial.mergestate -> mercurial.filemerge + from . import mergestate + + ms = mergestate.mergestate.read(repo) + if ms.active(): + for node in (ms.local, ms.other): + rev = cl.index.get_rev(node) + if rev is not None: + pinned.add(rev) + return pinned diff --git a/tests/test-demandimport.py b/tests/test-demandimport.py index 167901946d21b4425a6c537b493eaafc4e0f5c08_dGVzdHMvdGVzdC1kZW1hbmRpbXBvcnQucHk=..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_dGVzdHMvdGVzdC1kZW1hbmRpbXBvcnQucHk= 100644 --- a/tests/test-demandimport.py +++ b/tests/test-demandimport.py @@ -232,7 +232,7 @@ # Unlike the import statement, __import__() function should not raise # ImportError even if fromlist has an unknown item # (see Python/import.c:import_module_level() and ensure_fromlist()) -assert 'zipfile' not in sys.modules -zipfileimp = __import__('zipfile', globals(), locals(), ['unknownattr']) -assert f(zipfileimp) == "<module 'zipfile' from '?'>", f(zipfileimp) +assert 'ftplib' not in sys.modules +zipfileimp = __import__('ftplib', globals(), locals(), ['unknownattr']) +assert f(zipfileimp) == "<module 'ftplib' from '?'>", f(zipfileimp) assert not util.safehasattr(zipfileimp, 'unknownattr') diff --git a/tests/test-log.t b/tests/test-log.t index 167901946d21b4425a6c537b493eaafc4e0f5c08_dGVzdHMvdGVzdC1sb2cudA==..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_dGVzdHMvdGVzdC1sb2cudA== 100644 --- a/tests/test-log.t +++ b/tests/test-log.t @@ -2263,6 +2263,51 @@ } ] +follow files from wdir + + $ hg cp d1/f1 f1-copy + $ hg stat --all + M d1/f1 + A d1/f2 + A f1-copy + d1/f1 + R .d6/f1 + C D2/f1 + C D3.i/f1 + C d4.hg/f1 + C d5.d/f1 + + $ hg log -T '== {rev} ==\n' -fr'wdir()' --git --stat d5.d/f1 + == 2147483647 == + + == 0 == + d5.d/f1 | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + + + $ hg log -T '== {rev} ==\n' -fr'wdir()' --git --stat d1/f1 + == 2147483647 == + d1/f1 | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + + == 0 == + d1/f1 | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + + + BROKEN: added file should exist in wdir + $ hg log -T '== {rev} ==\n' -fr'wdir()' --git --stat d1/f2 + abort: cannot follow nonexistent file: "d1/f2" + [255] + + BROKEN: copied file should exist in wdir + $ hg log -T '== {rev} ==\n' -fr'wdir()' --git --stat f1-copy + abort: cannot follow nonexistent file: "f1-copy" + [255] + + $ hg log -T '== {rev} ==\n' -fr'wdir()' --git --stat notfound + notfound: $ENOENT$ + $ hg revert -aqC Check that adding an arbitrary name shows up in log automatically diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t index 167901946d21b4425a6c537b493eaafc4e0f5c08_dGVzdHMvdGVzdC1vYnNvbGV0ZS50..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_dGVzdHMvdGVzdC1vYnNvbGV0ZS50 100644 --- a/tests/test-obsolete.t +++ b/tests/test-obsolete.t @@ -1790,3 +1790,44 @@ d1b09fe3ad2b2a03e23a72f0c582e29a49570145 1a1a11184d2588af24e767e5335d5d9d07e8c550 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'note': 'Testing::Obsstore', 'operation': 'amend', 'user': 'test'} 1bfd8e3868f641e048b6667cd672c68932f26d00 79959ca316d5b27ac6be1dd0cfd0843a5b5412eb 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'note': 'Testing::Obsstore2', 'operation': 'amend', 'user': 'test'} $ cd .. + +Test that pinning of revisions in broken mergestate doesn't cause crash + + $ hg init pinning-broken-mergestate + $ cd pinning-broken-mergestate + $ echo a > file + $ hg ci -Aqm first +Create a pruned commit so pinning comes into play + $ echo pruned > pruned + $ hg ci -Aqm pruned + $ hg co -q 0 + $ hg debugobsolete $(getid pruned) + 1 new obsolescence markers + obsoleted 1 changesets +Back up changelog, so we can restore it later after causing merge conflicts +with it, thus ending up with mergestate that points to a non-existent commit + $ cp .hg/store/00changelog.i .hg/store/00changelog.i.first + $ echo b > file + $ hg ci -qm second + $ echo c > file + $ hg co -m 0 + merging file + warning: conflicts while merging file! (edit, then use 'hg resolve --mark') + 0 files updated, 0 files merged, 0 files removed, 1 files unresolved + use 'hg resolve' to retry unresolved file merges + [1] + $ mv -f .hg/store/00changelog.i.first .hg/store/00changelog.i +The local node should now point to a non-existent commit + $ hg debugmergestate + local (working copy): b73b8c9a4ab4da89a5a35a6f10dfb13edc84ca37 + other (destination): f53e9479dce52f79c923908241fa54f7da90a7ad + file: file (state "u") + local path: file (hash 971c419dd609331343dee105fffd0f4608dc0bf2, flags "") + ancestor path: file (node bc7ebe2d260cff30d2a39a130d84add36216f791) + other path: file (node b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3) + extra: ancestorlinknode = b73b8c9a4ab4da89a5a35a6f10dfb13edc84ca37 +We should be able to see the log (without the deleted commit, of course) + $ hg log -G + @ 0:f53e9479dce5 (draft) [tip ] first + + $ cd .. diff --git a/tests/test-rebase-check-restore.t b/tests/test-rebase-check-restore.t index 167901946d21b4425a6c537b493eaafc4e0f5c08_dGVzdHMvdGVzdC1yZWJhc2UtY2hlY2stcmVzdG9yZS50..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_dGVzdHMvdGVzdC1yZWJhc2UtY2hlY2stcmVzdG9yZS50 100644 --- a/tests/test-rebase-check-restore.t +++ b/tests/test-rebase-check-restore.t @@ -153,5 +153,29 @@ |/ o 0:draft 'A' + $ cat >> .hg/hgrc << EOF + > [experimental] + > evolution.createmarkers=True + > EOF + +When updating away from a dirty, obsolete wdir, don't complain that the old p1 +is filtered and requires --hidden. + + $ echo conflict > A + $ hg debugobsolete 071d07019675449d53b7e312c65bcf28adbbdb64 965c486023dbfdc9c32c52dc249a231882fd5c17 + 1 new obsolescence markers + obsoleted 1 changesets + $ hg update -r 2 --config ui.merge=internal:merge --merge + merging A + warning: conflicts while merging A! (edit, then use 'hg resolve --mark') + 1 files updated, 0 files merged, 1 files removed, 1 files unresolved + use 'hg resolve' to retry unresolved file merges + [1] + $ hg resolve A + merging A + warning: conflicts while merging A! (edit, then use 'hg resolve --mark') + [1] + + $ hg up -C -q . $ cd .. diff --git a/tests/test-rebase-obsolete.t b/tests/test-rebase-obsolete.t index 167901946d21b4425a6c537b493eaafc4e0f5c08_dGVzdHMvdGVzdC1yZWJhc2Utb2Jzb2xldGUudA==..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_dGVzdHMvdGVzdC1yZWJhc2Utb2Jzb2xldGUudA== 100644 --- a/tests/test-rebase-obsolete.t +++ b/tests/test-rebase-obsolete.t @@ -1795,6 +1795,8 @@ $ hg log -G @ 2:b18e25de2cf5 D | + | % 1:2ec65233581b B (pruned using prune) + |/ o 0:426bada5c675 A $ hg summary @@ -1802,8 +1804,8 @@ D branch: default commit: 1 modified, 1 added, 1 unknown, 1 unresolved - update: (current) - phases: 2 draft + update: 1 new changesets, 2 branch heads (merge) + phases: 3 draft rebase: 0 rebased, 2 remaining (rebase --continue) $ hg rebase --abort diff --git a/tests/test-strip.t b/tests/test-strip.t index 167901946d21b4425a6c537b493eaafc4e0f5c08_dGVzdHMvdGVzdC1zdHJpcC50..8f54fee983a8f0f5aa42d3e760b1c4530b8b9fab_dGVzdHMvdGVzdC1zdHJpcC50 100644 --- a/tests/test-strip.t +++ b/tests/test-strip.t @@ -1177,6 +1177,14 @@ summary: commitA +stripping a set containing a merge properly reset file content, including items on other branches + +The added file is moved to unknown, which is the behavior we have been seeing for other `hg strip --keep` call. + +stripping a set containing a merge properly reset file content, including items on other branches + +The added file is moved to unknown, which is the behavior we have been seeing for other `hg strip --keep` call. + $ hg unbundle -u $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg adding changesets adding manifests @@ -1185,6 +1193,50 @@ new changesets 35358f982181:4cf5e92caec2 (2 drafts) 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg id + 4cf5e92caec2 (new-branch) tip + $ hg status --rev "f62c6c09b707" + A bar.txt + $ hg diff --rev "f62c6c09b707" + diff -r f62c6c09b707 bar.txt + --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + +++ b/bar.txt Thu Jan 01 00:00:00 1970 +0000 + @@ -0,0 +1,1 @@ + +bar + $ hg log -G -v --rev 35358f982181:: --patch + @ changeset: 5:4cf5e92caec2 + |\ branch: new-branch + | ~ tag: tip + | parent: 3:f62c6c09b707 + | parent: 4:35358f982181 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | description: + | merge + | + | + | diff -r f62c6c09b707 -r 4cf5e92caec2 bar.txt + | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + | +++ b/bar.txt Thu Jan 01 00:00:00 1970 +0000 + | @@ -0,0 +1,1 @@ + | +bar + | + o changeset: 4:35358f982181 + | parent: 1:eca11cf91c71 + ~ user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: bar.txt + description: + bar + + + diff -r eca11cf91c71 -r 35358f982181 bar.txt + --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + +++ b/bar.txt Thu Jan 01 00:00:00 1970 +0000 + @@ -0,0 +1,1 @@ + +bar + + $ hg strip -k -r 35358f982181 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg $ hg log -G @@ -1211,12 +1263,14 @@ date: Thu Jan 01 00:00:00 1970 +0000 summary: commitA - $ hg diff - diff -r f62c6c09b707 bar.txt - --- /dev/null Thu Jan 01 00:00:00 1970 +0000 - +++ b/bar.txt Thu Jan 01 00:00:00 1970 +0000 - @@ -0,0 +1,1 @@ - +bar + + $ hg status -A + ? bar.txt + C a + C b + C foo.txt + $ cat bar.txt + bar Use delayedstrip to strip inside a transaction