diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -278,6 +278,11 @@ def checknewlabel(repo, lbl, kind): ) try: int(lbl) + if b'_' in lbl: + # If label contains underscores, Python might consider it an + # integer (with "_" as visual separators), but we do not. + # See PEP 515 - Underscores in Numeric Literals. + raise ValueError raise error.InputError(_(b"cannot use an integer as a name")) except ValueError: pass diff --git a/tests/test-branches.t b/tests/test-branches.t --- a/tests/test-branches.t +++ b/tests/test-branches.t @@ -82,6 +82,11 @@ trailing or leading spaces should be str (use 'hg update' to switch to it) [10] +underscores in numeric branch names (issue6737) + + $ hg branch 2700_210 + marked working directory as branch 2700_210 + verify update will accept invalid legacy branch names $ hg init test-invalid-branch-name