git-p4: sort client views by reverse View number

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>

Gary Gibbons committed Jan 2, 2012 at 18:05 UTC df5ed9077f18985a73f00fe2bacc2961598f73dc
2 files changed +10 -3
contrib/fast-import/git-p4
+9 -2
@@ -1924,10 +1924,17 @@ class P4Sync(Command, P4UserMap):
1924 else:
1925 include = len(v)
1926
1927 - temp[v] = (include, cv)
1927 + # store the View #number for sorting
1928 + # and the View string itself (this last for documentation)
1929 + temp[v] = (include, cv, int(k[4:]),k)
1930
1931 self.clientSpecDirs = temp.items()
1930 - self.clientSpecDirs.sort( lambda x, y: abs( y[1][0] ) - abs( x[1][0] ) )
1932 + # Perforce ViewNN with higher #numbers override those with lower
1933 + # reverse sort on the View #number
1934 + self.clientSpecDirs.sort( lambda x, y: y[1][2] - x[1][2] )
1935 + if self.verbose:
1936 + for val in self.clientSpecDirs:
1937 + print "clientSpecDirs: %s %s" % (val[0],val[1])
1938
1939 def run(self, args):
1940 self.depotPaths = []
t/t9809-git-p4-client-view.sh
+1 -1
@@ -133,7 +133,7 @@ test_expect_failure 'single file map' '
133 git_verify $files
134 '
135
136 -test_expect_failure 'later mapping takes precedence (entire repo)' '
136 +test_expect_success 'later mapping takes precedence (entire repo)' '
137 client_view "//depot/dir1/... //client/cli1/..." \
138 "//depot/... //client/cli2/..." &&
139 files="cli2/dir1/file11 cli2/dir1/file12