mercurial-devel | Failed pipeline for branch/default | 973aa75e

2021-11-29 Thread Heptapod


Pipeline #29729 has failed!

Project: mercurial-devel ( https://foss.heptapod.net/mercurial/mercurial-devel )
Branch: branch/default ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/commits/branch/default )

Commit: 973aa75e ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/commit/973aa75ed1dc6c5772e48bf660b55fe741ac5c6f
 )
Commit Message: automation: support Python 3.10 on Windows

Pyt...
Commit Author: Gregory Szorc ( https://foss.heptapod.net/indygreg )

Pipeline #29729 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/pipelines/29729 ) 
triggered by Administrator ( https://foss.heptapod.net/root )
had 1 failed job.

Job #269924 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/269924/raw )

Stage: tests
Name: windows-py3-pyox

-- 
You're receiving this email because of your account on foss.heptapod.net.



___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


Will work on adding allowing merge tools to partially resolve conflicts

2021-11-29 Thread Martin von Zweigbergk via Mercurial-devel
Hi,

Just a heads up that I will work on teaching the merge machinery to call
external merge tools to let them partially resolve a merge. That will
require a different protocol for interacting with the merge tool. We're
going to pass the merge tool 3 inputs and expect 3 possibly modified
outputs, instead of just a single output the way existing merge tools work.
That way they can leave conflicts in a conflict-marker-agnostic way. Let me
illustrate with an
example. Let's say you have this input:

base:
a
b
c
d

left:
a2
b
c
d2

right:
a3
b
c
d3

The tool now has some intelligence and decides that the conflict in the
first line should be resolved with a4, but it doesn't know how to resolve
the conflict in the last line. It then produces three outputs:

base:
a4
b
c
d

left:
a4
b
c
d2

right:
a4
b
c
d3

The goal is to be able to write a language-aware merge tool that resolves
whatever conflicts it can and leaves the rest for a regular merge tool
(such as `meld` or `:merge3`).
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D11829: errors: use detailed exit code for RepoLookupError

2021-11-29 Thread martinvonz (Martin von Zweigbergk)
martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11829

AFFECTED FILES
  mercurial/scmutil.py
  tests/test-bookmarks-current.t
  tests/test-bookmarks-pushpull.t
  tests/test-bookmarks.t
  tests/test-branch-option.t
  tests/test-bundle.t
  tests/test-commandserver.t
  tests/test-dispatch.t
  tests/test-infinitepush-ci.t
  tests/test-log-bookmark.t
  tests/test-log.t
  tests/test-obsolete-distributed.t
  tests/test-pull-r.t
  tests/test-remotefilelog-repack.t
  tests/test-revset.t
  tests/test-revset2.t
  tests/test-static-http.t
  tests/test-template-functions.t

CHANGE DETAILS

diff --git a/tests/test-template-functions.t b/tests/test-template-functions.t
--- a/tests/test-template-functions.t
+++ b/tests/test-template-functions.t
@@ -1295,10 +1295,10 @@
   -1
   $ hg log -T '{revset("%d", rev + 1)}\n' -r'tip'
   abort: unknown revision '3'
-  [255]
+  [10]
   $ hg log -T '{revset("%d", rev - 1)}\n' -r'null'
   abort: unknown revision '-2'
-  [255]
+  [10]
 
 Invalid arguments passed to revset()
 
diff --git a/tests/test-static-http.t b/tests/test-static-http.t
--- a/tests/test-static-http.t
+++ b/tests/test-static-http.t
@@ -95,7 +95,7 @@
   $ cd ..
   $ hg clone -r doesnotexist static-http://localhost:$HGPORT/remote local0
   abort: unknown revision 'doesnotexist'
-  [255]
+  [10]
   $ hg clone -r 0 static-http://localhost:$HGPORT/remote local0
   adding changesets
   adding manifests
diff --git a/tests/test-revset2.t b/tests/test-revset2.t
--- a/tests/test-revset2.t
+++ b/tests/test-revset2.t
@@ -870,7 +870,7 @@
   $ try m
   (symbol 'm')
   abort: unknown revision 'm'
-  [255]
+  [10]
 
   $ HGPLAINEXCEPT=revsetalias
   $ export HGPLAINEXCEPT
@@ -1061,7 +1061,7 @@
   (symbol 'max')
   (string '$1')))
   abort: unknown revision '$1'
-  [255]
+  [10]
 
 test scope of alias expansion: 'universe' is expanded prior to 'shadowall(0)',
 but 'all()' should never be substituted to '0()'.
diff --git a/tests/test-revset.t b/tests/test-revset.t
--- a/tests/test-revset.t
+++ b/tests/test-revset.t
@@ -306,7 +306,7 @@
 (negate
   (symbol 'a')))
   abort: unknown revision '-a'
-  [255]
+  [10]
   $ try é
   (symbol '\xc3\xa9')
   * set:
diff --git a/tests/test-remotefilelog-repack.t 
b/tests/test-remotefilelog-repack.t
--- a/tests/test-remotefilelog-repack.t
+++ b/tests/test-remotefilelog-repack.t
@@ -307,7 +307,7 @@
   1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over * (glob)
   $ hg prefetch -r 38
   abort: unknown revision '38'
-  [255]
+  [10]
   $ ls_l $TESTTMP/hgcache/master/packs/ | grep datapack
   -r--r--r--  70 052643fdcdebbd42d7c180a651a30d46098e6fe1.datapack
   $ ls_l $TESTTMP/hgcache/master/packs/ | grep histpack
diff --git a/tests/test-pull-r.t b/tests/test-pull-r.t
--- a/tests/test-pull-r.t
+++ b/tests/test-pull-r.t
@@ -112,7 +112,7 @@
 
   $ hg pull -qr missing ../repo
   abort: unknown revision 'missing'
-  [255]
+  [10]
 
 Pull multiple revisions with update:
 
diff --git a/tests/test-obsolete-distributed.t 
b/tests/test-obsolete-distributed.t
--- a/tests/test-obsolete-distributed.t
+++ b/tests/test-obsolete-distributed.t
@@ -570,7 +570,7 @@
   added 2 changesets with 0 changes to 2 files (+1 heads)
   (2 other changesets obsolete on arrival)
   abort: cannot update to target: filtered revision '6'
-  [255]
+  [10]
 
   $ cd ..
 
diff --git a/tests/test-log.t b/tests/test-log.t
--- a/tests/test-log.t
+++ b/tests/test-log.t
@@ -1417,7 +1417,7 @@
 
   $ hg log -b 're:.*'
   abort: unknown revision 're:.*'
-  [255]
+  [10]
   $ hg log -k 're:.*'
   $ hg log -u 're:.*'
 
@@ -1544,7 +1544,7 @@
 
   $ hg log -b dummy
   abort: unknown revision 'dummy'
-  [255]
+  [10]
 
 
 log -b .
diff --git a/tests/test-log-bookmark.t b/tests/test-log-bookmark.t
--- a/tests/test-log-bookmark.t
+++ b/tests/test-log-bookmark.t
@@ -189,10 +189,10 @@
 
   $ hg log -B unknown
   abort: bookmark 'unknown' does not exist
-  [255]
+  [10]
 
 Shouldn't accept string-matcher syntax:
 
   $ hg log -B 're:.*'
   abort: bookmark 're:.*' does not exist
-  [255]
+  [10]
diff --git a/tests/test-infinitepush-ci.t b/tests/test-infinitepush-ci.t
--- a/tests/test-infinitepush-ci.t
+++ b/tests/test-infinitepush-ci.t
@@ -204,7 +204,7 @@
   $ hg pull -r b4e4bce660512ad3e71189e14588a70ac8e31fef
   pulling from $TESTTMP/repo
   abort: unknown revision 'b4e4bce660512ad3e71189e14588a70ac8e31fef'
-  [255]
+  [10]
   $ hg glog
   o  1:6cb0989601f1 added a
   |  public
diff --git a/tests/test-dispatch.t b/tests/test-dispatch.t
--- a/tests/test-dispatch.t
+++ b/tests/test-dispatch.t
@@ -127,20 +127,20 @@
 #if no-chg
   $ HGPLAIN=+strictflags hg log -b --config='hooks.pre-log=false' default
   abort: unknown revision '--config=hooks.pre-log=false'
-  [255]
+  [10]
   $ HGPLAIN=+strictflags hg log -b -R. default
   abort: unknown revision '-R.'
-  [255]

D11824: errors: return more detailed errors when failing to parse or apply patch

2021-11-29 Thread martinvonz (Martin von Zweigbergk)
martinvonz created this revision.
Herald added a reviewer: durin42.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This patch adds subclasses of `PatchError` so we can distinguish
  between failure to parse a patch from failure to apply it. It updates
  the callers to raise either `InputError` or `StateError` depending on
  which type of error occurred.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11824

AFFECTED FILES
  mercurial/cmdutil.py
  mercurial/error.py
  mercurial/patch.py
  tests/test-commit-interactive.t
  tests/test-import-bypass.t
  tests/test-import-git.t
  tests/test-import-unknown.t
  tests/test-import.t
  tests/test-narrow-expanddirstate.t

CHANGE DETAILS

diff --git a/tests/test-narrow-expanddirstate.t 
b/tests/test-narrow-expanddirstate.t
--- a/tests/test-narrow-expanddirstate.t
+++ b/tests/test-narrow-expanddirstate.t
@@ -142,7 +142,7 @@
   Hunk #1 FAILED at 0
   1 out of 1 hunks FAILED -- saving rejects to file patchdir/f3.rej
   abort: patch failed to apply
-  [255]
+  [20]
   $ hg tracked | grep patchdir
   [1]
   $ hg files | grep patchdir > /dev/null
diff --git a/tests/test-import.t b/tests/test-import.t
--- a/tests/test-import.t
+++ b/tests/test-import.t
@@ -234,7 +234,7 @@
   $ hg --cwd b import -mpatch ../broken.patch
   applying ../broken.patch
   abort: bad hunk #1
-  [255]
+  [10]
   $ rm -r b
 
 hg -R repo import
@@ -834,7 +834,7 @@
   Hunk #1 FAILED at 0
   1 out of 1 hunks FAILED -- saving rejects to file a.rej
   abort: patch failed to apply
-  [255]
+  [20]
   $ hg import --no-commit -v fuzzy-tip.patch
   applying fuzzy-tip.patch
   patching file a
@@ -853,7 +853,7 @@
   Hunk #1 FAILED at 0
   1 out of 1 hunks FAILED -- saving rejects to file a.rej
   abort: patch failed to apply
-  [255]
+  [20]
   $ hg up -qC
   $ hg import --config patch.fuzz=2 --exact fuzzy-reparent.patch
   applying fuzzy-reparent.patch
@@ -2054,7 +2054,7 @@
   (use '--prefix' to apply patch relative to the current directory)
   1 out of 1 hunks FAILED -- saving rejects to file file1.rej
   abort: patch failed to apply
-  [255]
+  [20]
 
 test import crash (issue5375)
   $ cd ..
@@ -2064,7 +2064,7 @@
   applying patch from stdin
   a not tracked!
   abort: source file 'a' does not exist
-  [255]
+  [20]
 
 test immature end of hunk
 
@@ -2076,7 +2076,7 @@
   > EOF
   applying patch from stdin
   abort: bad hunk #1: incomplete hunk
-  [255]
+  [10]
 
   $ hg import - <<'EOF'
   > diff --git a/foo b/foo
@@ -2087,4 +2087,4 @@
   > EOF
   applying patch from stdin
   abort: bad hunk #1: incomplete hunk
-  [255]
+  [10]
diff --git a/tests/test-import-unknown.t b/tests/test-import-unknown.t
--- a/tests/test-import-unknown.t
+++ b/tests/test-import-unknown.t
@@ -29,7 +29,7 @@
   file added already exists
   1 out of 1 hunks FAILED -- saving rejects to file added.rej
   abort: patch failed to apply
-  [255]
+  [20]
 
 Test modifying an unknown file
 
@@ -41,7 +41,7 @@
   $ hg import --no-commit ../unknown.diff
   applying ../unknown.diff
   abort: cannot patch changed: file is not tracked
-  [255]
+  [20]
 
 Test removing an unknown file
 
@@ -54,7 +54,7 @@
   $ hg import --no-commit ../unknown.diff
   applying ../unknown.diff
   abort: cannot patch removed: file is not tracked
-  [255]
+  [20]
 
 Test copying onto an unknown file
 
@@ -64,6 +64,6 @@
   $ hg import --no-commit ../unknown.diff
   applying ../unknown.diff
   abort: cannot create copied: destination already exists
-  [255]
+  [20]
 
   $ cd ..
diff --git a/tests/test-import-git.t b/tests/test-import-git.t
--- a/tests/test-import-git.t
+++ b/tests/test-import-git.t
@@ -519,7 +519,7 @@
   > EOF
   applying patch from stdin
   abort: could not decode "binary2" binary patch: bad base85 character at 
position 6
-  [255]
+  [10]
 
   $ hg revert -aq
   $ hg import -d "100 0" -m rename-as-binary - <<"EOF"
@@ -534,7 +534,7 @@
   > EOF
   applying patch from stdin
   abort: "binary2" length is 5 bytes, should be 6
-  [255]
+  [10]
 
   $ hg revert -aq
   $ hg import -d "100 0" -m rename-as-binary - <<"EOF"
@@ -548,7 +548,7 @@
   > EOF
   applying patch from stdin
   abort: could not extract "binary2" binary data
-  [255]
+  [10]
 
 Simulate a copy/paste turning LF into CRLF (issue2870)
 
@@ -748,7 +748,7 @@
   > EOF
   applying patch from stdin
   abort: cannot create b: destination already exists
-  [255]
+  [20]
   $ cat b
   b
 
@@ -768,7 +768,7 @@
   cannot create b: destination already exists
   1 out of 1 hunks FAILED -- saving rejects to file b.rej
   abort: patch failed to apply
-  [255]
+  [20]
   $ cat b
   b
 
@@ -791,7 +791,7 @@
   Hunk #1 FAILED at 0
   1 out of 1 hunks FAILED -- saving rejects to file linkb.rej
   abort: patch failed to apply
-  [255]
+  [20]
   $ hg st
   ? b.rej
   ? linkb.rej
diff --git a/tests/test-import-bypass.t b/tests/test-import-bypass.t
--- a/tests/test-import-bypass.t
+++ 

D11830: errors: use detailed exit code in pathauditor

2021-11-29 Thread martinvonz (Martin von Zweigbergk)
martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11830

AFFECTED FILES
  mercurial/pathutil.py
  tests/test-audit-path.t
  tests/test-audit-subrepo.t
  tests/test-commit.t
  tests/test-import.t
  tests/test-rename.t
  tests/test-walk.t

CHANGE DETAILS

diff --git a/tests/test-walk.t b/tests/test-walk.t
--- a/tests/test-walk.t
+++ b/tests/test-walk.t
@@ -299,10 +299,10 @@
   f  mammals/skunk   skunk
   $ hg debugwalk -v .hg
   abort: path 'mammals/.hg' is inside nested repo 'mammals'
-  [255]
+  [10]
   $ hg debugwalk -v ../.hg
   abort: path contains illegal component: .hg
-  [255]
+  [10]
   $ cd ..
 
   $ hg debugwalk -v -Ibeans
@@ -410,16 +410,16 @@
   [255]
   $ hg debugwalk -v .hg
   abort: path contains illegal component: .hg
-  [255]
+  [10]
   $ hg debugwalk -v beans/../.hg
   abort: path contains illegal component: .hg
-  [255]
+  [10]
   $ hg debugwalk -v beans/../.hg/data
   abort: path contains illegal component: .hg/data
-  [255]
+  [10]
   $ hg debugwalk -v beans/.hg
   abort: path 'beans/.hg' is inside nested repo 'beans'
-  [255]
+  [10]
 
 Test explicit paths and excludes:
 
diff --git a/tests/test-rename.t b/tests/test-rename.t
--- a/tests/test-rename.t
+++ b/tests/test-rename.t
@@ -610,7 +610,7 @@
 
   $ hg rename d1/d11/a1 .hg/foo
   abort: path contains illegal component: .hg/foo
-  [255]
+  [10]
   $ hg status -C
   $ hg rename d1/d11/a1 ../foo
   abort: ../foo not under root '$TESTTMP'
@@ -620,7 +620,7 @@
   $ mv d1/d11/a1 .hg/foo
   $ hg rename --after d1/d11/a1 .hg/foo
   abort: path contains illegal component: .hg/foo
-  [255]
+  [10]
   $ hg status -C
   ! d1/d11/a1
   $ hg update -C
@@ -629,11 +629,11 @@
 
   $ hg rename d1/d11/a1 .hg
   abort: path contains illegal component: .hg/a1
-  [255]
+  [10]
   $ hg --config extensions.largefiles= rename d1/d11/a1 .hg
   The fsmonitor extension is incompatible with the largefiles extension and 
has been disabled. (fsmonitor !)
   abort: path contains illegal component: .hg/a1
-  [255]
+  [10]
   $ hg status -C
   $ hg rename d1/d11/a1 ..
   abort: ../a1 not under root '$TESTTMP'
@@ -647,7 +647,7 @@
   $ mv d1/d11/a1 .hg
   $ hg rename --after d1/d11/a1 .hg
   abort: path contains illegal component: .hg/a1
-  [255]
+  [10]
   $ hg status -C
   ! d1/d11/a1
   $ hg update -C
@@ -656,7 +656,7 @@
 
   $ (cd d1/d11; hg rename ../../d2/b ../../.hg/foo)
   abort: path contains illegal component: .hg/foo
-  [255]
+  [10]
   $ hg status -C
   $ (cd d1/d11; hg rename ../../d2/b ../../../foo)
   abort: ../../../foo not under root '$TESTTMP'
diff --git a/tests/test-import.t b/tests/test-import.t
--- a/tests/test-import.t
+++ b/tests/test-import.t
@@ -1085,7 +1085,7 @@
   > EOF
   applying patch from stdin
   abort: path contains illegal component: ../outside/foo
-  [255]
+  [10]
   $ cd ..
 
 
diff --git a/tests/test-commit.t b/tests/test-commit.t
--- a/tests/test-commit.t
+++ b/tests/test-commit.t
@@ -665,7 +665,7 @@
 #else
   $ hg co --clean tip
   abort: path contains illegal component: .h\xe2\x80\x8cg/hgrc (esc)
-  [255]
+  [10]
 #endif
 
   $ hg rollback -f
@@ -686,7 +686,7 @@
   $ "$PYTHON" evil-commit.py
   $ hg co --clean tip
   abort: path contains illegal component: HG~1/hgrc
-  [255]
+  [10]
 
   $ hg rollback -f
   repository tip rolled back to revision 2 (undo commit)
@@ -706,7 +706,7 @@
   $ "$PYTHON" evil-commit.py
   $ hg co --clean tip
   abort: path contains illegal component: HG8B6C~2/hgrc
-  [255]
+  [10]
 
   $ cd ..
 
diff --git a/tests/test-audit-subrepo.t b/tests/test-audit-subrepo.t
--- a/tests/test-audit-subrepo.t
+++ b/tests/test-audit-subrepo.t
@@ -10,7 +10,7 @@
   $ echo 'sub/.hg = sub/.hg' >> .hgsub
   $ hg ci -qAm 'add subrepo "sub/.hg"'
   abort: path 'sub/.hg' is inside nested repo 'sub'
-  [255]
+  [10]
 
 prepare tampered repo (including the commit above):
 
@@ -34,7 +34,7 @@
 
   $ hg clone -q hgname hgname2
   abort: path 'sub/.hg' is inside nested repo 'sub'
-  [255]
+  [10]
 
 Test absolute path
 --
@@ -47,7 +47,7 @@
   $ echo '/sub = sub' >> .hgsub
   $ hg ci -qAm 'add subrepo "/sub"'
   abort: path contains illegal component: /sub
-  [255]
+  [10]
 
 prepare tampered repo (including the commit above):
 
@@ -71,7 +71,7 @@
 
   $ hg clone -q absolutepath absolutepath2
   abort: path contains illegal component: /sub
-  [255]
+  [10]
 
 Test root path
 --
@@ -84,7 +84,7 @@
   $ echo '/ = sub' >> .hgsub
   $ hg ci -qAm 'add subrepo "/"'
   abort: path ends in directory separator: /
-  [255]
+  [10]
 
 prepare tampered repo (including the commit above):
 
@@ -108,7 +108,7 @@
 
   $ hg clone -q rootpath rootpath2
   abort: path ends in directory separator: /
-  [255]
+  [10]
 
 Test empty path
 ---
@@ -197,7 +197,7 @@
   $ echo '../sub = ../sub' >> .hgsub
   $ hg ci -qAm 'add subrepo "../sub"'
   

D11831: errors: use detailed error for invalid commit-extras argument

2021-11-29 Thread martinvonz (Martin von Zweigbergk)
martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11831

AFFECTED FILES
  hgext/commitextras.py
  tests/test-commit.t

CHANGE DETAILS

diff --git a/tests/test-commit.t b/tests/test-commit.t
--- a/tests/test-commit.t
+++ b/tests/test-commit.t
@@ -134,13 +134,13 @@
   $ hg add quux
   $ hg commit -m "adding internal used extras" --extra amend_source=hash
   abort: key 'amend_source' is used internally, can't be set manually
-  [255]
+  [10]
   $ hg commit -m "special chars in extra" --extra id@phab=214
   abort: keys can only contain ascii letters, digits, '_' and '-'
-  [255]
+  [10]
   $ hg commit -m "empty key" --extra =value
   abort: unable to parse '=value', keys can't be empty
-  [255]
+  [10]
   $ hg commit -m "adding extras" --extra sourcehash=foo --extra oldhash=bar
   $ hg log -r . -T '{extras % "{extra}\n"}'
   branch=default
diff --git a/hgext/commitextras.py b/hgext/commitextras.py
--- a/hgext/commitextras.py
+++ b/hgext/commitextras.py
@@ -65,23 +65,23 @@
 b"unable to parse '%s', should follow "
 b"KEY=VALUE format"
 )
-raise error.Abort(msg % raw)
+raise error.InputError(msg % raw)
 k, v = raw.split(b'=', 1)
 if not k:
 msg = _(b"unable to parse '%s', keys can't be empty")
-raise error.Abort(msg % raw)
+raise error.InputError(msg % raw)
 if re.search(br'[^\w-]', k):
 msg = _(
 b"keys can only contain ascii letters, digits,"
 b" '_' and '-'"
 )
-raise error.Abort(msg)
+raise error.InputError(msg)
 if k in usedinternally:
 msg = _(
 b"key '%s' is used internally, can't be set "
 b"manually"
 )
-raise error.Abort(msg % k)
+raise error.InputError(msg % k)
 inneropts['extra'][k] = v
 return super(repoextra, self).commit(*innerpats, **inneropts)
 



To: martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D11825: patch: add hint about mangled whitespace on bad patch

2021-11-29 Thread martinvonz (Martin von Zweigbergk)
martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  One of the most common reasons that a patch doesn't apply is because
  its whitespace has been mangled (e.g. by their mail client or though
  copy). Let's provide a hint about that.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11825

AFFECTED FILES
  mercurial/cmdutil.py
  tests/test-import-git.t
  tests/test-import.t

CHANGE DETAILS

diff --git a/tests/test-import.t b/tests/test-import.t
--- a/tests/test-import.t
+++ b/tests/test-import.t
@@ -234,6 +234,7 @@
   $ hg --cwd b import -mpatch ../broken.patch
   applying ../broken.patch
   abort: bad hunk #1
+  (check that whitespace in the patch has not been mangled)
   [10]
   $ rm -r b
 
@@ -2076,6 +2077,7 @@
   > EOF
   applying patch from stdin
   abort: bad hunk #1: incomplete hunk
+  (check that whitespace in the patch has not been mangled)
   [10]
 
   $ hg import - <<'EOF'
@@ -2087,4 +2089,5 @@
   > EOF
   applying patch from stdin
   abort: bad hunk #1: incomplete hunk
+  (check that whitespace in the patch has not been mangled)
   [10]
diff --git a/tests/test-import-git.t b/tests/test-import-git.t
--- a/tests/test-import-git.t
+++ b/tests/test-import-git.t
@@ -519,6 +519,7 @@
   > EOF
   applying patch from stdin
   abort: could not decode "binary2" binary patch: bad base85 character at 
position 6
+  (check that whitespace in the patch has not been mangled)
   [10]
 
   $ hg revert -aq
@@ -534,6 +535,7 @@
   > EOF
   applying patch from stdin
   abort: "binary2" length is 5 bytes, should be 6
+  (check that whitespace in the patch has not been mangled)
   [10]
 
   $ hg revert -aq
@@ -548,6 +550,7 @@
   > EOF
   applying patch from stdin
   abort: could not extract "binary2" binary data
+  (check that whitespace in the patch has not been mangled)
   [10]
 
 Simulate a copy/paste turning LF into CRLF (issue2870)
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -2025,7 +2025,12 @@
 similarity=sim / 100.0,
 )
 except error.PatchParseError as e:
-raise error.InputError(pycompat.bytestr(e))
+raise error.InputError(
+pycompat.bytestr(e),
+hint=_(
+b'check that whitespace in the patch has not been mangled'
+),
+)
 except error.PatchApplicationError as e:
 if not partial:
 raise error.StateError(pycompat.bytestr(e))
@@ -2086,7 +2091,12 @@
 eolmode=None,
 )
 except error.PatchParseError as e:
-raise error.InputError(stringutil.forcebytestr(e))
+raise error.InputError(
+stringutil.forcebytestr(e),
+hint=_(
+b'check that whitespace in the patch has not been 
mangled'
+),
+)
 except error.PatchApplicationError as e:
 raise error.StateError(stringutil.forcebytestr(e))
 if opts.get(b'exact'):



To: martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D11827: errors: use detailed exit code when trying to merge file outside narrowspec

2021-11-29 Thread martinvonz (Martin von Zweigbergk)
martinvonz created this revision.
Herald added a reviewer: durin42.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11827

AFFECTED FILES
  mercurial/merge.py
  tests/test-narrow-merge.t
  tests/test-narrow-rebase.t

CHANGE DETAILS

diff --git a/tests/test-narrow-rebase.t b/tests/test-narrow-rebase.t
--- a/tests/test-narrow-rebase.t
+++ b/tests/test-narrow-rebase.t
@@ -96,4 +96,4 @@
   $ hg rebase -d 'desc("modify outside/f1")'
   rebasing 4:707c035aadb6 "conflicting outside/f1"
   abort: conflict in file 'outside/f1' is outside narrow clone
-  [255]
+  [20]
diff --git a/tests/test-narrow-merge.t b/tests/test-narrow-merge.t
--- a/tests/test-narrow-merge.t
+++ b/tests/test-narrow-merge.t
@@ -101,4 +101,4 @@
   $ hg merge 'desc("conflicting outside/f1")'
   abort: conflict in file 'outside/f1' is outside narrow clone (flat !)
   abort: conflict in file 'outside/' is outside narrow clone (tree !)
-  [255]
+  [20]
diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -542,7 +542,7 @@
 hint=_(b'merging in the other direction may work'),
 )
 else:
-raise error.Abort(
+raise error.StateError(
 _(b'conflict in file \'%s\' is outside narrow clone') % f
 )
 



To: martinvonz, durin42, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D11828: errors: use detailed exit code for detected case-collision

2021-11-29 Thread martinvonz (Martin von Zweigbergk)
martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11828

AFFECTED FILES
  mercurial/scmutil.py
  tests/test-casecollision.t

CHANGE DETAILS

diff --git a/tests/test-casecollision.t b/tests/test-casecollision.t
--- a/tests/test-casecollision.t
+++ b/tests/test-casecollision.t
@@ -12,7 +12,7 @@
   ? A
   $ hg add --config ui.portablefilenames=abort A
   abort: possible case-folding collision for A
-  [255]
+  [20]
   $ hg st
   A a
   ? A
diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -341,7 +341,7 @@
 if fl in self._loweredfiles and f not in self._dirstate:
 msg = _(b'possible case-folding collision for %s') % f
 if self._abort:
-raise error.Abort(msg)
+raise error.StateError(msg)
 self._ui.warn(_(b"warning: %s\n") % msg)
 self._loweredfiles.add(fl)
 self._newfiles.add(f)



To: martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D11826: errors: use detailed exit code for non-integer number of diff context lines

2021-11-29 Thread martinvonz (Martin von Zweigbergk)
martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11826

AFFECTED FILES
  mercurial/mdiff.py
  tests/test-diff-unified.t

CHANGE DETAILS

diff --git a/tests/test-diff-unified.t b/tests/test-diff-unified.t
--- a/tests/test-diff-unified.t
+++ b/tests/test-diff-unified.t
@@ -46,7 +46,7 @@
 
   $ hg diff --nodates -U foo
   abort: diff context lines count must be an integer, not 'foo'
-  [255]
+  [10]
 
 
   $ hg diff --nodates -U 2
@@ -87,7 +87,7 @@
 
   $ hg --config diff.unified=foo diff --nodates
   abort: diff context lines count must be an integer, not 'foo'
-  [255]
+  [10]
 
 noprefix config and option
 
diff --git a/mercurial/mdiff.py b/mercurial/mdiff.py
--- a/mercurial/mdiff.py
+++ b/mercurial/mdiff.py
@@ -84,7 +84,7 @@
 try:
 self.context = int(self.context)
 except ValueError:
-raise error.Abort(
+raise error.InputError(
 _(b'diff context lines count must be an integer, not %r')
 % pycompat.bytestr(self.context)
 )



To: martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


Re: Proposing a new release calendar

2021-11-29 Thread Augie Fackler
Revising the calendar seems fine. I think “on or after” dates make sense, 
especially as release management often involves corporate contributors.

> On Nov 29, 2021, at 9:58 AM, Raphaël Gomès  wrote:
> 
> This is a good point, though these are "on or around" dates, which means that 
> usually the next work day is the actual release day.
> 
> We've already had a Jan 1 date since 2.0 (IIUC), so this shouldn't be too 
> much of a problem, though I can see going for an explicit Jan 3 or something 
> to clarify it.
> 
> On 11/29/21 3:55 PM, Julien Cristau wrote:
>> On Mon, Nov 22, 2021 at 11:34:19AM +0100, Raphaël Gomès wrote:
>>> Hi all,
>>> 
>>> This email is in part prompted by the previous releases' delay, but also by
>>> discussions around release timing we've previously had. 6.0 is very likely
>>> coming out tomorrow with a delay of 22 days due to a lot of issues with
>>> Windows Python 3 support. I was going to propose to move the 6.1 release to
>>> March 1st 2022 just this once, but thought about doing this more
>>> permanently.
>>> 
>>> With the relatively limited resources we have and the current calendar
>>> including a release that falls right in the middle of summer where activity
>>> is lowest and help is less available, I propose that we go back to 3 major
>>> releases a year with the following calendar:
>>> 
>>> Freeze date | Major Release | Minor | Minor | Minor
>>> ---
>>> Feb 15  | Mar 1 | Apr 1 | May 1 | Jun 1
>>> Jun 17  | Jul 1 | Aug 1 | Sep 1 | Oct 1
>>> Oct 18  | Nov 1 | Dec 1 | Jan 1 | Feb 1
>>> 
>>> What do you all think?
>>> 
>> Is Jan 1 a good choice there, for even a minor release?  That seems
>> likely to either slip or ruin somebody's holidays...
>> 
>> Cheers,
>> Julien

___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D11821: extensions: highlight the name of the faulty extensions in the error message

2021-11-29 Thread marmoute (Pierre-Yves David)
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This make it easier to understand the message when the extensions name is
  common.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11821

AFFECTED FILES
  mercurial/extensions.py
  tests/test-bad-extension.t
  tests/test-dispatch.t
  tests/test-extension.t
  tests/test-largefiles-misc.t
  tests/test-lfs.t
  tests/test-qrecord.t
  tests/test-revset2.t

CHANGE DETAILS

diff --git a/tests/test-revset2.t b/tests/test-revset2.t
--- a/tests/test-revset2.t
+++ b/tests/test-revset2.t
@@ -1601,7 +1601,7 @@
   > EOF
 
   $ hg debugrevspec "custom1()"
-  *** failed to import extension custompredicate from 
$TESTTMP/custompredicate.py: intentional failure of loading extension
+  *** failed to import extension "custompredicate" from 
$TESTTMP/custompredicate.py: intentional failure of loading extension
   hg: parse error: unknown identifier: custom1
   [10]
 
diff --git a/tests/test-qrecord.t b/tests/test-qrecord.t
--- a/tests/test-qrecord.t
+++ b/tests/test-qrecord.t
@@ -117,7 +117,7 @@
 
   $ echo "mq=nonexistent" >> $HGRCPATH
   $ hg help qrecord
-  *** failed to import extension mq from nonexistent: [Errno *] * (glob)
+  *** failed to import extension "mq" from nonexistent: [Errno *] * (glob)
   hg qrecord [OPTION]... PATCH [FILE]...
   
   interactively record a new patch
diff --git a/tests/test-lfs.t b/tests/test-lfs.t
--- a/tests/test-lfs.t
+++ b/tests/test-lfs.t
@@ -40,7 +40,7 @@
   > EOF
 
   $ hg config extensions
-  \*\*\* failed to import extension lfs from missing.py: [Errno *] $ENOENT$: 
'missing.py' (glob)
+  \*\*\* failed to import extension "lfs" from missing.py: [Errno *] $ENOENT$: 
'missing.py' (glob)
   abort: repository requires features unknown to this Mercurial: lfs
   (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
   [255]
diff --git a/tests/test-largefiles-misc.t b/tests/test-largefiles-misc.t
--- a/tests/test-largefiles-misc.t
+++ b/tests/test-largefiles-misc.t
@@ -41,7 +41,7 @@
   > EOF
 
   $ hg config extensions
-  \*\*\* failed to import extension largefiles from missing.py: [Errno *] 
$ENOENT$: 'missing.py' (glob)
+  \*\*\* failed to import extension "largefiles" from missing.py: [Errno *] 
$ENOENT$: 'missing.py' (glob)
   abort: repository requires features unknown to this Mercurial: largefiles
   (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
   [255]
diff --git a/tests/test-extension.t b/tests/test-extension.t
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -649,7 +649,7 @@
 module stub. Our custom lazy importer for Python 2 always returns a stub.
 
   $ (PYTHONPATH=${PYTHONPATH}${PATHSEP}${TESTTMP}; hg --config 
extensions.checkrelativity=$TESTTMP/checkrelativity.py checkrelativity) || true
-  *** failed to import extension checkrelativity from 
$TESTTMP/checkrelativity.py: No module named 'extlibroot.lsub1.lsub2.notexist' 
(py3 !)
+  *** failed to import extension "checkrelativity" from 
$TESTTMP/checkrelativity.py: No module named 'extlibroot.lsub1.lsub2.notexist'
   hg: unknown command 'checkrelativity' (py3 !)
   (use 'hg help' for a list of commands) (py3 !)
 
@@ -1882,7 +1882,7 @@
   > EOF
 
   $ hg deprecatedcmd > /dev/null
-  *** failed to import extension deprecatedcmd from 
$TESTTMP/deprecated/deprecatedcmd.py: missing attributes: norepo, optionalrepo, 
inferrepo
+  *** failed to import extension "deprecatedcmd" from 
$TESTTMP/deprecated/deprecatedcmd.py: missing attributes: norepo, optionalrepo, 
inferrepo
   *** (use @command decorator to register 'deprecatedcmd')
   hg: unknown command 'deprecatedcmd'
   (use 'hg help' for a list of commands)
@@ -1891,7 +1891,7 @@
  the extension shouldn't be loaded at all so the mq works:
 
   $ hg qseries --config extensions.mq= > /dev/null
-  *** failed to import extension deprecatedcmd from 
$TESTTMP/deprecated/deprecatedcmd.py: missing attributes: norepo, optionalrepo, 
inferrepo
+  *** failed to import extension "deprecatedcmd" from 
$TESTTMP/deprecated/deprecatedcmd.py: missing attributes: norepo, optionalrepo, 
inferrepo
   *** (use @command decorator to register 'deprecatedcmd')
 
   $ cd ..
@@ -1939,7 +1939,7 @@
   > test_unicode_default_value = $TESTTMP/test_unicode_default_value.py
   > EOF
   $ hg -R $TESTTMP/opt-unicode-default dummy
-  *** failed to import extension test_unicode_default_value from 
$TESTTMP/test_unicode_default_value.py: unicode *'value' found in 
cmdtable.dummy (glob)
+  *** failed to import extension "test_unicode_default_value" from 
$TESTTMP/test_unicode_default_value.py: unicode 'value' found in cmdtable.dummy
   *** (use b'' to make it byte string)
   hg: unknown command 'dummy'
   (did you mean summary?)
diff --git a/tests/test-dispatch.t b/tests/test-dispatch.t
--- a/tests/test-dispatch.t
+++ b/tests/test-dispatch.t
@@ -84,7 +84,7 @@
   > 

D11822: extension: add a `required` suboption to enforce the use of an extensions

2021-11-29 Thread marmoute (Pierre-Yves David)
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  If `required` is set, failing to load an extensions will abort. See the test
  and documentation for details.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11822

AFFECTED FILES
  mercurial/configitems.py
  mercurial/extensions.py
  mercurial/helptext/config.txt
  tests/test-extension.t

CHANGE DETAILS

diff --git a/tests/test-extension.t b/tests/test-extension.t
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -1944,3 +1944,94 @@
   hg: unknown command 'dummy'
   (did you mean summary?)
   [10]
+
+Check the mandatory extension feature
+-
+
+  $ hg init mandatory-extensions
+  $ cat > $TESTTMP/mandatory-extensions/.hg/good.py << EOF
+  > pass
+  > EOF
+  $ cat > $TESTTMP/mandatory-extensions/.hg/bad.py << EOF
+  > raise RuntimeError("babar")
+  > EOF
+  $ cat > $TESTTMP/mandatory-extensions/.hg/syntax.py << EOF
+  > def (
+  > EOF
+
+Check that the good one load :
+
+  $ cat > $TESTTMP/mandatory-extensions/.hg/hgrc << EOF
+  > [extensions]
+  > good = $TESTTMP/mandatory-extensions/.hg/good.py
+  > EOF
+
+  $ hg -R mandatory-extensions id
+   tip
+
+Make it mandatory to load
+
+  $ cat >> $TESTTMP/mandatory-extensions/.hg/hgrc << EOF
+  > good:required = yes
+  > EOF
+
+  $ hg -R mandatory-extensions id
+   tip
+
+Check that the bad one does not load
+
+  $ cat >> $TESTTMP/mandatory-extensions/.hg/hgrc << EOF
+  > bad = $TESTTMP/mandatory-extensions/.hg/bad.py
+  > EOF
+
+  $ hg -R mandatory-extensions id
+  *** failed to import extension "bad" from 
$TESTTMP/mandatory-extensions/.hg/bad.py: babar
+   tip
+
+Make it mandatory to load
+
+  $ cat >> $TESTTMP/mandatory-extensions/.hg/hgrc << EOF
+  > bad:required = yes
+  > EOF
+
+  $ hg -R mandatory-extensions id
+  abort: failed to import extension "bad" from 
$TESTTMP/mandatory-extensions/.hg/bad.py: babar
+  (loading of this extension was required, see `hg help config.extensions` for 
details)
+  [255]
+
+Make it not mandatory to load
+
+  $ cat >> $TESTTMP/mandatory-extensions/.hg/hgrc << EOF
+  > bad:required = no
+  > EOF
+
+  $ hg -R mandatory-extensions id
+  *** failed to import extension "bad" from 
$TESTTMP/mandatory-extensions/.hg/bad.py: babar
+   tip
+
+Same check with the syntax error one
+
+  $ cat >> $TESTTMP/mandatory-extensions/.hg/hgrc << EOF
+  > bad = !
+  > syntax = $TESTTMP/mandatory-extensions/.hg/syntax.py
+  > syntax:required = yes
+  > EOF
+
+  $ hg -R mandatory-extensions id
+  abort: failed to import extension "syntax" from 
$TESTTMP/mandatory-extensions/.hg/syntax.py: invalid syntax (*syntax.py, line 
1) (glob)
+  (loading of this extension was required, see `hg help config.extensions` for 
details)
+  [255]
+
+Same check with a missing one
+
+  $ cat >> $TESTTMP/mandatory-extensions/.hg/hgrc << EOF
+  > syntax = !
+  > syntax:required =
+  > missing = foo/bar/baz/I/do/not/exist/
+  > missing:required = yes
+  > EOF
+
+  $ hg -R mandatory-extensions id
+  abort: failed to import extension "missing" from 
foo/bar/baz/I/do/not/exist/: [Errno 2] $ENOENT$: 'foo/bar/baz/I/do/not/exist'
+  (loading of this extension was required, see `hg help config.extensions` for 
details)
+  [255]
diff --git a/mercurial/helptext/config.txt b/mercurial/helptext/config.txt
--- a/mercurial/helptext/config.txt
+++ b/mercurial/helptext/config.txt
@@ -850,6 +850,17 @@
   # (this extension will get loaded from the file specified)
   myfeature = ~/.hgext/myfeature.py
 
+If an extension fails to load, a warning will be issued, and Mercurial will
+proceed. To enforce that an extension must be loaded, one can set the 
`required`
+suboption in the config::
+
+  [extensions]
+  myfeature = ~/.hgext/myfeature.py
+  myfeature:required = yes
+
+To debug extension loading issue, one can add `--traceback` to their mercurial
+invocation.
+
 
 ``format``
 --
diff --git a/mercurial/extensions.py b/mercurial/extensions.py
--- a/mercurial/extensions.py
+++ b/mercurial/extensions.py
@@ -314,10 +314,23 @@
 else:
 error_msg = _(b'failed to import extension "%s": %s')
 error_msg %= (name, msg)
-ui.warn((b"*** %s\n") % error_msg)
-if isinstance(inst, error.Hint) and inst.hint:
-ui.warn(_(b"*** (%s)\n") % inst.hint)
-ui.traceback()
+
+ext_options = ui.configsuboptions(b"extensions", name)[1]
+if stringutil.parsebool(ext_options.get(b"required", b'no')):
+hint = None
+if isinstance(inst, error.Hint) and inst.hint:
+hint = inst.hint
+if hint is None:
+hint = _(
+b"loading of this extension was required, "

D11823: extensions: add a default "*" suboptions prefix

2021-11-29 Thread marmoute (Pierre-Yves David)
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This is similar to what we do in other section (e.g. `paths`) and allow to
  change the behavior for all extensions.
  
  Sub options on individual extensions overwrite the default settings.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11823

AFFECTED FILES
  mercurial/extensions.py
  mercurial/helptext/config.txt
  tests/test-check-module-imports.t
  tests/test-extension.t

CHANGE DETAILS

diff --git a/tests/test-extension.t b/tests/test-extension.t
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -2035,3 +2035,20 @@
   abort: failed to import extension "missing" from 
foo/bar/baz/I/do/not/exist/: [Errno 2] $ENOENT$: 'foo/bar/baz/I/do/not/exist'
   (loading of this extension was required, see `hg help config.extensions` for 
details)
   [255]
+
+Have a "default" setting for the suboption:
+
+  $ cat > $TESTTMP/mandatory-extensions/.hg/hgrc << EOF
+  > [extensions]
+  > bad = $TESTTMP/mandatory-extensions/.hg/bad.py
+  > bad:required = no
+  > good = $TESTTMP/mandatory-extensions/.hg/good.py
+  > syntax = $TESTTMP/mandatory-extensions/.hg/syntax.py
+  > *:required = yes
+  > EOF
+
+  $ hg -R mandatory-extensions id
+  *** failed to import extension "bad" from 
$TESTTMP/mandatory-extensions/.hg/bad.py: babar
+  abort: failed to import extension "syntax" from 
$TESTTMP/mandatory-extensions/.hg/syntax.py: invalid syntax (*syntax.py, line 
1) (glob)
+  (loading of this extension was required, see `hg help config.extensions` for 
details)
+  [255]
diff --git a/tests/test-check-module-imports.t 
b/tests/test-check-module-imports.t
--- a/tests/test-check-module-imports.t
+++ b/tests/test-check-module-imports.t
@@ -41,4 +41,5 @@
   > -X tests/test-demandimport.py \
   > -X tests/test-imports-checker.t \
   > -X tests/test-verify-repo-operations.py \
+  > -X tests/test-extension.t \
   > | sed 's-\\-/-g' | "$PYTHON" "$import_checker" -
diff --git a/mercurial/helptext/config.txt b/mercurial/helptext/config.txt
--- a/mercurial/helptext/config.txt
+++ b/mercurial/helptext/config.txt
@@ -861,6 +861,13 @@
 To debug extension loading issue, one can add `--traceback` to their mercurial
 invocation.
 
+A default setting can we set using the special `*` extension key::
+
+  [extensions]
+  *:required = yes
+  myfeature = ~/.hgext/myfeature.py
+  rebase=
+
 
 ``format``
 --
diff --git a/mercurial/extensions.py b/mercurial/extensions.py
--- a/mercurial/extensions.py
+++ b/mercurial/extensions.py
@@ -291,6 +291,8 @@
 )
 ui.log(b'extension', b'- processing %d entries\n', len(result))
 with util.timedcm('load all extensions') as stats:
+default_sub_options = ui.configsuboptions(b"extensions", b"*")[1]
+
 for (name, path) in result:
 if path:
 if path[0:1] == b'!':
@@ -315,8 +317,10 @@
 error_msg = _(b'failed to import extension "%s": %s')
 error_msg %= (name, msg)
 
+options = default_sub_options.copy()
 ext_options = ui.configsuboptions(b"extensions", name)[1]
-if stringutil.parsebool(ext_options.get(b"required", b'no')):
+options.update(ext_options)
+if stringutil.parsebool(options.get(b"required", b'no')):
 hint = None
 if isinstance(inst, error.Hint) and inst.hint:
 hint = inst.hint



To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D11819: extensions: ignore "sub-options" when looking for extensions

2021-11-29 Thread marmoute (Pierre-Yves David)
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  config suboptions are separated by ":" (see the path one for example). So we
  dont want to confuse these config with actual extensions.
  
  We don't have extensions sub option yet, but I am about to introduce one for
  making sure an extensions can load. So lets level the floor first.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11819

AFFECTED FILES
  mercurial/configitems.py
  mercurial/extensions.py

CHANGE DETAILS

diff --git a/mercurial/extensions.py b/mercurial/extensions.py
--- a/mercurial/extensions.py
+++ b/mercurial/extensions.py
@@ -282,6 +282,7 @@
 result = ui.configitems(b"extensions")
 if whitelist is not None:
 result = [(k, v) for (k, v) in result if k in whitelist]
+result = [(k, v) for (k, v) in result if b':' not in k]
 newindex = len(_order)
 ui.log(
 b'extension',
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -1281,7 +1281,7 @@
 )
 coreconfigitem(
 b'extensions',
-b'.*',
+b'[^:]*',
 default=None,
 generic=True,
 )



To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D11820: extensions: refactor handling of loading error make it reusable

2021-11-29 Thread marmoute (Pierre-Yves David)
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  We will need this in the next patch.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11820

AFFECTED FILES
  mercurial/extensions.py

CHANGE DETAILS

diff --git a/mercurial/extensions.py b/mercurial/extensions.py
--- a/mercurial/extensions.py
+++ b/mercurial/extensions.py
@@ -307,15 +307,12 @@
 except Exception as inst:
 msg = stringutil.forcebytestr(inst)
 if path:
-ui.warn(
-_(b"*** failed to import extension %s from %s: %s\n")
-% (name, path, msg)
-)
+error_msg = _(b"failed to import extension %s from %s: %s")
+error_msg %= (name, path, msg)
 else:
-ui.warn(
-_(b"*** failed to import extension %s: %s\n")
-% (name, msg)
-)
+error_msg = _(b"failed to import extension %s: %s")
+error_msg %= (name, msg)
+ui.warn((b"*** %s\n") % error_msg)
 if isinstance(inst, error.Hint) and inst.hint:
 ui.warn(_(b"*** (%s)\n") % inst.hint)
 ui.traceback()



To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


mercurial-devel | Failed pipeline for branch/default | 7016572f

2021-11-29 Thread Heptapod


Pipeline #29714 has failed!

Project: mercurial-devel ( https://foss.heptapod.net/mercurial/mercurial-devel )
Branch: branch/default ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/commits/branch/default )

Commit: 7016572f ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/commit/7016572f2b9c674a07f81fd2233e25df42c34a49
 )
Commit Message: rhg: implement the debugignorerhg subcommand

T...
Commit Author: Arseniy Alekseyev ( https://foss.heptapod.net/aalekseyev )

Pipeline #29714 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/pipelines/29714 ) 
triggered by Administrator ( https://foss.heptapod.net/root )
had 1 failed job.

Job #269843 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/269843/raw )

Stage: tests
Name: windows-py3-pyox

-- 
You're receiving this email because of your account on foss.heptapod.net.



___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


Re: Proposing a new release calendar

2021-11-29 Thread Julien Cristau
On Mon, Nov 22, 2021 at 11:34:19AM +0100, Raphaël Gomès wrote:
> Hi all,
> 
> This email is in part prompted by the previous releases' delay, but also by
> discussions around release timing we've previously had. 6.0 is very likely
> coming out tomorrow with a delay of 22 days due to a lot of issues with
> Windows Python 3 support. I was going to propose to move the 6.1 release to
> March 1st 2022 just this once, but thought about doing this more
> permanently.
> 
> With the relatively limited resources we have and the current calendar
> including a release that falls right in the middle of summer where activity
> is lowest and help is less available, I propose that we go back to 3 major
> releases a year with the following calendar:
> 
> Freeze date | Major Release | Minor | Minor | Minor
> ---
> Feb 15  | Mar 1 | Apr 1 | May 1 | Jun 1
> Jun 17  | Jul 1 | Aug 1 | Sep 1 | Oct 1
> Oct 18  | Nov 1 | Dec 1 | Jan 1 | Feb 1
> 
> What do you all think?
> 
Is Jan 1 a good choice there, for even a minor release?  That seems
likely to either slip or ruin somebody's holidays...

Cheers,
Julien
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


Re: Proposing a new release calendar

2021-11-29 Thread Raphaël Gomès
This is a good point, though these are "on or around" dates, which means 
that usually the next work day is the actual release day.


We've already had a Jan 1 date since 2.0 (IIUC), so this shouldn't be 
too much of a problem, though I can see going for an explicit Jan 3 or 
something to clarify it.


On 11/29/21 3:55 PM, Julien Cristau wrote:

On Mon, Nov 22, 2021 at 11:34:19AM +0100, Raphaël Gomès wrote:

Hi all,

This email is in part prompted by the previous releases' delay, but also by
discussions around release timing we've previously had. 6.0 is very likely
coming out tomorrow with a delay of 22 days due to a lot of issues with
Windows Python 3 support. I was going to propose to move the 6.1 release to
March 1st 2022 just this once, but thought about doing this more
permanently.

With the relatively limited resources we have and the current calendar
including a release that falls right in the middle of summer where activity
is lowest and help is less available, I propose that we go back to 3 major
releases a year with the following calendar:

Freeze date | Major Release | Minor | Minor | Minor
---
Feb 15  | Mar 1 | Apr 1 | May 1 | Jun 1
Jun 17  | Jul 1 | Aug 1 | Sep 1 | Oct 1
Oct 18  | Nov 1 | Dec 1 | Jan 1 | Feb 1

What do you all think?


Is Jan 1 a good choice there, for even a minor release?  That seems
likely to either slip or ruin somebody's holidays...

Cheers,
Julien

___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


mercurial-devel | Failed pipeline for branch/default | 58b4ed8b

2021-11-29 Thread Heptapod


Pipeline #29705 has failed!

Project: mercurial-devel ( https://foss.heptapod.net/mercurial/mercurial-devel )
Branch: branch/default ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/commits/branch/default )

Commit: 58b4ed8b ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/commit/58b4ed8b732783b248ca0b583de8b5dce888f5a0
 )
Commit Message: rhg: only complain about poorly configured fall...
Commit Author: Arseniy Alekseyev ( https://foss.heptapod.net/aalekseyev )

Pipeline #29705 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/pipelines/29705 ) 
triggered by Administrator ( https://foss.heptapod.net/root )
had 2 failed jobs.

Job #269773 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/269773/raw )

Stage: tests
Name: windows-py3
Job #269774 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/269774/raw )

Stage: tests
Name: windows-py3-pyox

-- 
You're receiving this email because of your account on foss.heptapod.net.



___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


Re: Proposing a new release calendar

2021-11-29 Thread Raphaël Gomès

Any thoughts (especially from the other release managers)?

On 11/22/21 11:34 AM, Raphaël Gomès wrote:

Hi all,

This email is in part prompted by the previous releases' delay, but 
also by discussions around release timing we've previously had. 6.0 is 
very likely coming out tomorrow with a delay of 22 days due to a lot 
of issues with Windows Python 3 support. I was going to propose to 
move the 6.1 release to March 1st 2022 just this once, but thought 
about doing this more permanently.


With the relatively limited resources we have and the current calendar 
including a release that falls right in the middle of summer where 
activity is lowest and help is less available, I propose that we go 
back to 3 major releases a year with the following calendar:


Freeze date | Major Release | Minor | Minor | Minor
---
Feb 15  | Mar 1 | Apr 1 | May 1 | Jun 1
Jun 17  | Jul 1 | Aug 1 | Sep 1 | Oct 1
Oct 18  | Nov 1 | Dec 1 | Jan 1 | Feb 1

What do you all think?

Raphaël

___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D11818: rhg: refactor to use IgnoreFnType alias more widely

2021-11-29 Thread aalekseyev (Arseniy Alekseyev)
aalekseyev created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11818

AFFECTED FILES
  rust/hg-core/src/matchers.rs

CHANGE DETAILS

diff --git a/rust/hg-core/src/matchers.rs b/rust/hg-core/src/matchers.rs
--- a/rust/hg-core/src/matchers.rs
+++ b/rust/hg-core/src/matchers.rs
@@ -22,6 +22,7 @@
 PatternSyntax,
 };
 
+use crate::dirstate::status::IgnoreFnType;
 use crate::filepatterns::normalize_path_bytes;
 use std::borrow::ToOwned;
 use std::collections::HashSet;
@@ -246,7 +247,7 @@
 /// ```
 pub struct IncludeMatcher<'a> {
 patterns: Vec,
-match_fn: Box Fn(&'r HgPath) -> bool + 'a + Sync>,
+match_fn: IgnoreFnType<'a>,
 /// Whether all the patterns match a prefix (i.e. recursively)
 prefix: bool,
 roots: HashSet,
@@ -341,9 +342,9 @@
 
 /// Returns the regex pattern and a function that matches an `HgPath` against
 /// said regex formed by the given ignore patterns.
-fn build_regex_match(
-ignore_patterns: &[IgnorePattern],
-) -> PatternResult<(Vec, Box bool + Sync>)> {
+fn build_regex_match<'a, 'b>(
+ignore_patterns: &'a [IgnorePattern],
+) -> PatternResult<(Vec, IgnoreFnType<'b>)> {
 let mut regexps = vec![];
 let mut exact_set = HashSet::new();
 
@@ -365,10 +366,10 @@
 let func = move |filename: | {
 exact_set.contains(filename) || matcher(filename)
 };
-Box::new(func) as Box bool + Sync>
+Box::new(func) as IgnoreFnType
 } else {
 let func = move |filename: | exact_set.contains(filename);
-Box::new(func) as Box bool + Sync>
+Box::new(func) as IgnoreFnType
 };
 
 Ok((full_regex, func))
@@ -479,8 +480,8 @@
 /// should be matched.
 fn build_match<'a, 'b>(
 ignore_patterns: Vec,
-) -> PatternResult<(Vec, Box bool + 'b + Sync>)> {
-let mut match_funcs: Vec bool + Sync>> = vec![];
+) -> PatternResult<(Vec, IgnoreFnType<'b>)> {
+let mut match_funcs: Vec> = vec![];
 // For debugging and printing
 let mut patterns = vec![];
 
@@ -567,10 +568,7 @@
 mut all_pattern_files: Vec,
 root_dir: ,
 inspect_pattern_bytes:  impl FnMut(&[u8]),
-) -> PatternResult<(
-Box Fn(&'r HgPath) -> bool + Sync + 'a>,
-Vec,
-)> {
+) -> PatternResult<(IgnoreFnType<'a>, Vec)> {
 let mut all_patterns = vec![];
 let mut all_warnings = vec![];
 



To: aalekseyev, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


mercurial-devel | Failed pipeline for branch/default | 58b4ed8b

2021-11-29 Thread Heptapod


Pipeline #29705 has failed!

Project: mercurial-devel ( https://foss.heptapod.net/mercurial/mercurial-devel )
Branch: branch/default ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/commits/branch/default )

Commit: 58b4ed8b ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/commit/58b4ed8b732783b248ca0b583de8b5dce888f5a0
 )
Commit Message: rhg: only complain about poorly configured fall...
Commit Author: Arseniy Alekseyev ( https://foss.heptapod.net/aalekseyev )

Pipeline #29705 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/pipelines/29705 ) 
triggered by Administrator ( https://foss.heptapod.net/root )
had 2 failed jobs.

Job #269746 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/269746/raw )

Stage: tests
Name: windows-py3
Job #269747 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/269747/raw )

Stage: tests
Name: windows-py3-pyox

-- 
You're receiving this email because of your account on foss.heptapod.net.



___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D11817: sparse: lock the store when updating requirements config

2021-11-29 Thread aalekseyev (Arseniy Alekseyev)
aalekseyev created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REPOSITORY
  rHG Mercurial

BRANCH
  stable

REVISION DETAIL
  https://phab.mercurial-scm.org/D11817

AFFECTED FILES
  mercurial/sparse.py
  tests/test-sparse-with-safe-share.t

CHANGE DETAILS

diff --git a/tests/test-sparse-with-safe-share.t 
b/tests/test-sparse-with-safe-share.t
--- a/tests/test-sparse-with-safe-share.t
+++ b/tests/test-sparse-with-safe-share.t
@@ -16,10 +16,8 @@
   $ echo x > hide
   $ hg ci -Aqm 'initial'
 
-Verify basic --include
+Regression test: checks that this command correctly locks the store
+before updating the store [requirements] config.
 
   $ hg up -q 0
   $ hg debugsparse --include 'hide'
-  devel-warn: write with no lock: "requires" at: *mercurial/scmutil.py:1558 
(writerequires) (glob)
-
-TODO: bug in sparse when used together with safe-share^
diff --git a/mercurial/sparse.py b/mercurial/sparse.py
--- a/mercurial/sparse.py
+++ b/mercurial/sparse.py
@@ -718,7 +718,7 @@
 
 The new config is written out and a working directory refresh is performed.
 """
-with repo.wlock(), repo.dirstate.parentchange():
+with repo.wlock(), repo.lock(), repo.dirstate.parentchange():
 raw = repo.vfs.tryread(b'sparse')
 oldinclude, oldexclude, oldprofiles = parseconfig(
 repo.ui, raw, b'sparse'



To: aalekseyev, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


mercurial-devel | Failed pipeline for branch/stable | e70fcc1c

2021-11-29 Thread Heptapod


Pipeline #29695 has failed!

Project: mercurial-devel ( https://foss.heptapod.net/mercurial/mercurial-devel )
Branch: branch/stable ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/commits/branch/stable )

Commit: e70fcc1c ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/commit/e70fcc1c6ac7de2d29060f1b53c3abb1241971de
 )
Commit Message: tests: fix test-fix on NetBSD

Differential Rev...
Commit Author: Thomas Klausner

Pipeline #29695 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/pipelines/29695 ) 
triggered by Raphaël Gomès ( https://foss.heptapod.net/raphael.gomes )
had 4 failed jobs.

Job #269681 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/269681/raw )

Stage: tests
Name: windows-py3
Job #269673 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/269673/raw )

Stage: tests
Name: test-py2-pure
Job #269679 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/269679/raw )

Stage: tests
Name: test-py3-chg
Job #269682 ( 
https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/269682/raw )

Stage: tests
Name: windows-py3-pyox

-- 
You're receiving this email because of your account on foss.heptapod.net.



___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


Mercurial mini-sprint on December 3rd

2021-11-29 Thread Raphaël Gomès

Hello users and developers of Mercurial,

The next occurrence of monthly remote mini-sprints organized by Octobus 
will be about Mercurial itself, and is happening December 3rd.


The rallying point will be the Mercurial IRC channel: 
https://www.mercurial-scm.org/wiki/IRC


There is no fixed topic, you may bring your own, and we always have 
small things for drive-by contributors. Feel free to come by if you 
simply have questions and ideas.


Our timezone is CET, or if you prefer UTC+1. Of course people from other 
timezones are welcome to join when they can!


Looking forward to it,
Raphaël

___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel