diff options
author | Lars Schneider <larsxschneider@gmail.com> | 2015-08-28 14:00:34 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-08-28 10:33:16 -0700 |
commit | a0a50d873c575876c6a5c185ac1c64b9a33e2fb3 (patch) | |
tree | 2d5db0875a375ad99e46d3093f020ec487dece1a /git-p4.py | |
parent | 3a9835bf65d07321924f2d60686a194e9d257d20 (diff) | |
download | git-a0a50d873c575876c6a5c185ac1c64b9a33e2fb3.tar.gz |
git-p4: honor core.ignorecase when using P4 client specsls/p4-fold-case-client-specs
Perforce depot may record paths in mixed cases, e.g. "p4 files" may
show that there are these two paths:
//depot/Path/to/file1
//depot/pATH/to/file2
and with "p4" or "p4v", these end up in the same directory, e.g.
//depot/Path/to/file1
//depot/Path/to/file2
which is the desired outcome on case insensitive systems.
If git-p4 is used with client spec "//depot/Path/...", however, then
all files not matching the case in the client spec are ignored (in
the example above "//depot/pATH/to/file2").
Fix this by using the path case that appears first in lexicographical
order when core.ignorecase is set to true. This behavior is consistent
with "p4" and "p4v".
Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Acked-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-p4.py')
-rwxr-xr-x | git-p4.py | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -1950,10 +1950,14 @@ class View(object): if "unmap" in res: # it will list all of them, but only one not unmap-ped continue + if gitConfigBool("core.ignorecase"): + res['depotFile'] = res['depotFile'].lower() self.client_spec_path_cache[res['depotFile']] = self.convert_client_path(res["clientFile"]) # not found files or unmap files set to "" for depotFile in fileArgs: + if gitConfigBool("core.ignorecase"): + depotFile = depotFile.lower() if depotFile not in self.client_spec_path_cache: self.client_spec_path_cache[depotFile] = "" @@ -1962,6 +1966,9 @@ class View(object): depot file should live. Returns "" if the file should not be mapped in the client.""" + if gitConfigBool("core.ignorecase"): + depot_path = depot_path.lower() + if depot_path in self.client_spec_path_cache: return self.client_spec_path_cache[depot_path] |