git-p4: support multiple depot paths in p4 submit
authorSam Hocevar <sam@hocevar.net>
Sat, 19 Dec 2015 09:39:39 +0000 (09:39 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 21 Dec 2015 19:26:36 +0000 (11:26 -0800)
When submitting from a repository that was cloned using a client spec,
use the full list of paths when ruling out files that are outside the
view. This fixes a bug where only files pertaining to the first path
would be included in the p4 submit.

Signed-off-by: Sam Hocevar <sam@hocevar.net>
Signed-off-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-p4.py
index 13f124061f43a4bc212066f865aaaac39feb5385..2f10f01d34f20116fa590758cf473870ec531260 100755 (executable)
--- a/git-p4.py
+++ b/git-p4.py
@@ -1458,6 +1458,8 @@ def prepareSubmitTemplate(self):
            Remove lines in the Files section that show changes to files
            outside the depot path we're committing into."""
 
            Remove lines in the Files section that show changes to files
            outside the depot path we're committing into."""
 
+        [upstream, settings] = findUpstreamBranchPoint()
+
         template = ""
         inFilesSection = False
         for line in p4_read_pipe_lines(['change', '-o']):
         template = ""
         inFilesSection = False
         for line in p4_read_pipe_lines(['change', '-o']):
@@ -1470,8 +1472,13 @@ def prepareSubmitTemplate(self):
                     lastTab = path.rfind("\t")
                     if lastTab != -1:
                         path = path[:lastTab]
                     lastTab = path.rfind("\t")
                     if lastTab != -1:
                         path = path[:lastTab]
-                        if not p4PathStartsWith(path, self.depotPath):
-                            continue
+                        if settings.has_key('depot-paths'):
+                            if not [p for p in settings['depot-paths']
+                                    if p4PathStartsWith(path, p)]:
+                                continue
+                        else:
+                            if not p4PathStartsWith(path, self.depotPath):
+                                continue
                 else:
                     inFilesSection = False
             else:
                 else:
                     inFilesSection = False
             else: