Code

git-p4: sort client views by reverse View number
authorGary Gibbons <ggibbons@perforce.com>
Mon, 2 Jan 2012 23:05:51 +0000 (18:05 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 3 Jan 2012 22:10:02 +0000 (14:10 -0800)
Correct view sorting to support the Perforce order,
where client views are ordered and later views
override earlier view mappings.

[pw: one test now succeeds]

Signed-off-by: Gary Gibbons <ggibbons@perforce.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/fast-import/git-p4
t/t9809-git-p4-client-view.sh

index c144c8960c0af6719ad29f677745d60f6aa8cd12..2fd4d3b2a6ae296ee6fda2f50ad5a5443bfc0d52 100755 (executable)
@@ -1924,10 +1924,17 @@ class P4Sync(Command, P4UserMap):
                     else:
                         include = len(v)
 
-                    temp[v] = (include, cv)
+                    # store the View #number for sorting
+                    # and the View string itself (this last for documentation)
+                    temp[v] = (include, cv, int(k[4:]),k)
 
         self.clientSpecDirs = temp.items()
-        self.clientSpecDirs.sort( lambda x, y: abs( y[1][0] ) - abs( x[1][0] ) )
+        # Perforce ViewNN with higher #numbers override those with lower
+        # reverse sort on the View #number
+        self.clientSpecDirs.sort( lambda x, y:  y[1][2] -  x[1][2]  )
+        if self.verbose:
+            for val in self.clientSpecDirs:
+                    print "clientSpecDirs: %s %s" % (val[0],val[1])
 
     def run(self, args):
         self.depotPaths = []
index cbf2213e96faf85eea393c48c55252099e68fdfe..06652cbf4fafff448c5665d91da2dc000025e6ad 100755 (executable)
@@ -133,7 +133,7 @@ test_expect_failure 'single file map' '
        git_verify $files
 '
 
-test_expect_failure 'later mapping takes precedence (entire repo)' '
+test_expect_success 'later mapping takes precedence (entire repo)' '
        client_view "//depot/dir1/... //client/cli1/..." \
                    "//depot/... //client/cli2/..." &&
        files="cli2/dir1/file11 cli2/dir1/file12