diff options
author | Mazo, Andrey <amazo@checkvideo.com> | 2019-04-01 18:02:24 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-04-02 11:25:41 +0900 |
commit | f2768cb343cb0320f79692625dea7f50af643759 (patch) | |
tree | 7e0e0bea253ef926b7fe682a680bf64414772ce5 /git-p4.py | |
parent | git-p4: add failing test for "git-p4: match branches case insensitively if co... (diff) | |
download | tgif-f2768cb343cb0320f79692625dea7f50af643759.tar.xz |
git-p4: match branches case insensitively if configured
git-p4 knows how to handle case insensitivity in file paths
if core.ignorecase is set.
However, when determining a branch for a file,
it still does a case-sensitive prefix match.
This may result in some file changes to be lost on import.
For example, given the following commits
1. add //depot/main/file1
2. add //depot/DirA/file2
3. add //depot/dira/file3
4. add //depot/DirA/file4
and "branchList = main:DirA" branch mapping,
commit 3 will be lost.
So, do branch search case insensitively if running with core.ignorecase set.
Teach splitFilesIntoBranches() to use the p4PathStartsWith() function
for path prefix matches instead of always case-sensitive match.
Signed-off-by: Andrey Mazo <amazo@checkvideo.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-p4.py')
-rwxr-xr-x | git-p4.py | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -2668,7 +2668,7 @@ class P4Sync(Command, P4UserMap): path = self.clientSpecDirs.map_in_client(path) if self.detectBranches: for b in self.knownBranches: - if path.startswith(b + "/"): + if p4PathStartsWith(path, b + "/"): path = path[len(b)+1:] elif self.keepRepoPath: @@ -2723,7 +2723,7 @@ class P4Sync(Command, P4UserMap): for branch in self.knownBranches.keys(): # add a trailing slash so that a commit into qt/4.2foo # doesn't end up in qt/4.2, e.g. - if relPath.startswith(branch + "/"): + if p4PathStartsWith(relPath, branch + "/"): if branch not in branches: branches[branch] = [] branches[branch].append(file) |