pathencode: fix hashmangle short dir limit (
issue3958)
The Python version of this (see mercurial/store.py:_hashencode) copies path
components up to a limit of maxshortdirslen bytes. The Python version does not
consider the initial "dh/" to be part of the this, though, while the C version
currently does. Adding len("dh/") == 3 to the limit for the C version brings it
in line with the Python version.
This was not caught by the randomized testing scheme in test-pathencode.py
because of a couple of flaws with the test. Upcoming patches will fix those
problems.
$ hg init
$ mkdir alpha
$ touch alpha/one
$ mkdir beta
$ touch beta/two
$ hg add alpha/one beta/two
$ hg ci -m "start"
$ echo 1 > alpha/one
$ echo 2 > beta/two
everything
$ hg diff --nodates
diff -r 7d5ef1aea329 alpha/one
--- a/alpha/one
+++ b/alpha/one
@@ -0,0 +1,1 @@
+1
diff -r 7d5ef1aea329 beta/two
--- a/beta/two
+++ b/beta/two
@@ -0,0 +1,1 @@
+2
beta only
$ hg diff --nodates beta
diff -r 7d5ef1aea329 beta/two
--- a/beta/two
+++ b/beta/two
@@ -0,0 +1,1 @@
+2
inside beta
$ cd beta
$ hg diff --nodates .
diff -r 7d5ef1aea329 beta/two
--- a/beta/two
+++ b/beta/two
@@ -0,0 +1,1 @@
+2
$ cd ..