[PATCH] copies: document hack for adding '' to set of dirs

Martin von Zweigbergk martinvonz at google.com
Fri May 22 16:06:53 CDT 2015

# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1432328524 25200
#      Fri May 22 14:02:04 2015 -0700
# Node ID d25b0f4d22dd272f7f0921345d2979b3ab221836
# Parent  f2b98dacb37ddd6713b11a1a871fcdbbc5fd8bb2
copies: document hack for adding '' to set of dirs

The root directory is not normally added to 'dirs' instances (although
I think it should be). In copies.mergecopies, we call dirname() to get
the directory of a path and then check for containment in the 'dirs'
instances ('d1' and 'd2'). In order to easily handle files in the root
directory, '/' is added to d1/d2. This results in the empty string
being added to the sets, since what comes before the slash in '/' is
an empty string. This seems less than obvious, so let's document it.

diff --git a/mercurial/copies.py b/mercurial/copies.py
--- a/mercurial/copies.py
+++ b/mercurial/copies.py
@@ -376,6 +376,7 @@
     # generate a directory move map
     d1, d2 = c1.dirs(), c2.dirs()
+    # Hack for adding '', which is not otherwise added, to d1 and d2
     invalid = set()

More information about the Mercurial-devel mailing list