[PATCH] bookmark: don't allow integers as bookmark/branch/tag names
Durham Goode
durham at fb.com
Wed Feb 6 01:57:05 UTC 2013
# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1360110173 28800
# Node ID 3e4293758d473380c2877d07ead9eaeccff34b65
# Parent c6377e34cb1ed79cb142f01652b0acfa09ef8c1f
bookmark: don't allow integers as bookmark/branch/tag names
Bookmarks/branches/tags shouldn't be allowed to be integers because that
overlaps with revision numbers. Right now if a user created one they can't
use it anyway because the revision numbers take precedence.
The check only happens when creating a new bookmark/etc from a command so it
shouldn't affect existing bookmarks/branches/tags or importing branches from
git.
This fix was prompted by us having a user create a bookmark named "404" then
accidentally checkout a very old version of our repository.
diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -34,6 +34,11 @@
for c in (':', '\0', '\n', '\r'):
if c in lbl:
raise util.Abort(_("%r cannot be used in a name") % c)
+ try:
+ int(lbl)
+ raise util.Abort(_("a %s cannot have an integer as its name") % kind)
+ except ValueError:
+ pass
def checkfilename(f):
'''Check that the filename f is an acceptable filename for a tracked file'''
diff --git a/tests/test-bookmarks.t b/tests/test-bookmarks.t
--- a/tests/test-bookmarks.t
+++ b/tests/test-bookmarks.t
@@ -257,6 +257,12 @@
abort: a bookmark cannot have the name of an existing branch
[255]
+bookmark with integer name
+
+ $ hg bookmark 10
+ abort: a bookmark cannot have an integer as its name
+ [255]
+
incompatible options
$ hg bookmark -m Y -d Z
diff --git a/tests/test-rebase-collapse.t b/tests/test-rebase-collapse.t
--- a/tests/test-rebase-collapse.t
+++ b/tests/test-rebase-collapse.t
@@ -496,15 +496,15 @@
$ hg ci -Am 'A'
adding a
- $ hg branch '1'
- marked working directory as branch 1
+ $ hg branch 'one'
+ marked working directory as branch one
(branches are permanent and global, did you want a bookmark?)
$ echo 'b' > b
$ hg ci -Am 'B'
adding b
- $ hg branch '2'
- marked working directory as branch 2
+ $ hg branch 'two'
+ marked working directory as branch two
(branches are permanent and global, did you want a bookmark?)
$ echo 'c' > c
$ hg ci -Am 'C'
@@ -518,9 +518,9 @@
$ hg tglog
@ 3: 'D'
|
- | o 2: 'C' 2
+ | o 2: 'C' two
| |
- | o 1: 'B' 1
+ | o 1: 'B' one
|/
o 0: 'A'
@@ -546,9 +546,9 @@
|/
o 3: 'D'
|
- | o 2: 'C' 2
+ | o 2: 'C' two
| |
- | o 1: 'B' 1
+ | o 1: 'B' one
|/
o 0: 'A'
@@ -559,9 +559,9 @@
|
o 3: 'D'
|
- | o 2: 'C' 2
+ | o 2: 'C' two
| |
- | o 1: 'B' 1
+ | o 1: 'B' one
|/
o 0: 'A'
More information about the Mercurial-devel
mailing list