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>
This commit is contained in:
Gary Gibbons 2012-01-02 18:05:51 -05:00 коммит произвёл Junio C Hamano
Родитель b10048d0e9
Коммит df5ed9077f
2 изменённых файлов: 10 добавлений и 3 удалений

Просмотреть файл

@ -1924,10 +1924,17 @@ class P4Sync(Command, P4UserMap):
else: else:
include = len(v) 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 = 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): def run(self, args):
self.depotPaths = [] self.depotPaths = []

Просмотреть файл

@ -133,7 +133,7 @@ test_expect_failure 'single file map' '
git_verify $files 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/..." \ client_view "//depot/dir1/... //client/cli1/..." \
"//depot/... //client/cli2/..." && "//depot/... //client/cli2/..." &&
files="cli2/dir1/file11 cli2/dir1/file12 files="cli2/dir1/file11 cli2/dir1/file12