Added support for mapping p4 labels to git tags
Signed-off-by: Simon Hausmann <hausmann@kde.org>maint
							parent
							
								
									8910ac0e88
								
							
						
					
					
						commit
						1f4ba1cbfc
					
				|  | @ -625,7 +625,47 @@ class GitSync(Command): | ||||||
|  |  | ||||||
|         self.gitStream.write("\n") |         self.gitStream.write("\n") | ||||||
|  |  | ||||||
|         self.lastChange = int(details["change"]) |         change = int(details["change"]) | ||||||
|  |  | ||||||
|  |         self.lastChange = change | ||||||
|  |  | ||||||
|  |         if change in self.labels: | ||||||
|  |             label = self.labels[change] | ||||||
|  |             labelDetails = label[0] | ||||||
|  |             labelRevisions = label[1] | ||||||
|  |  | ||||||
|  |             files = p4CmdList("files %s...@%s" % (branchPrefix, change)) | ||||||
|  |  | ||||||
|  |             if len(files) == len(labelRevisions): | ||||||
|  |  | ||||||
|  |                 cleanedFiles = {} | ||||||
|  |                 for info in files: | ||||||
|  |                     if info["action"] == "delete": | ||||||
|  |                         continue | ||||||
|  |                     cleanedFiles[info["depotFile"]] = info["rev"] | ||||||
|  |  | ||||||
|  |                 if cleanedFiles == labelRevisions: | ||||||
|  |                     self.gitStream.write("tag tag_%s\n" % labelDetails["label"]) | ||||||
|  |                     self.gitStream.write("from %s\n" % branch) | ||||||
|  |  | ||||||
|  |                     owner = labelDetails["Owner"] | ||||||
|  |                     tagger = "" | ||||||
|  |                     if author in self.users: | ||||||
|  |                         tagger = "%s %s %s" % (self.users[owner], epoch, self.tz) | ||||||
|  |                     else: | ||||||
|  |                         tagger = "%s <a@b> %s %s" % (owner, epoch, self.tz) | ||||||
|  |                     self.gitStream.write("tagger %s\n" % tagger) | ||||||
|  |                     self.gitStream.write("data <<EOT\n") | ||||||
|  |                     self.gitStream.write(labelDetails["Description"]) | ||||||
|  |                     self.gitStream.write("EOT\n\n") | ||||||
|  |  | ||||||
|  |                 else: | ||||||
|  |                     if not silent: | ||||||
|  |                         print "Tag %s does not match with change %s: files do not match." % (labelDetails["label"], change) | ||||||
|  |  | ||||||
|  |             else: | ||||||
|  |                 if not silent: | ||||||
|  |                     print "Tag %s does not match with change %s: file count is different." % (labelDetails["label"], change) | ||||||
|  |  | ||||||
|     def extractFilesInCommitToBranch(self, files, branchPrefix): |     def extractFilesInCommitToBranch(self, files, branchPrefix): | ||||||
|         newFiles = [] |         newFiles = [] | ||||||
|  | @ -757,6 +797,21 @@ class GitSync(Command): | ||||||
|                 continue |                 continue | ||||||
|             self.users[output["User"]] = output["FullName"] + " <" + output["Email"] + ">" |             self.users[output["User"]] = output["FullName"] + " <" + output["Email"] + ">" | ||||||
|  |  | ||||||
|  |     def getLabels(self): | ||||||
|  |         self.labels = {} | ||||||
|  |  | ||||||
|  |         for output in p4CmdList("labels %s..." % self.globalPrefix): | ||||||
|  |             label = output["label"] | ||||||
|  |             revisions = {} | ||||||
|  |             newestChange = 0 | ||||||
|  |             for file in p4CmdList("files //...@%s" % label): | ||||||
|  |                 revisions[file["depotFile"]] = file["rev"] | ||||||
|  |                 change = int(file["change"]) | ||||||
|  |                 if change > newestChange: | ||||||
|  |                     newestChange = change | ||||||
|  |  | ||||||
|  |             self.labels[newestChange] = [output, revisions] | ||||||
|  |  | ||||||
|     def run(self, args): |     def run(self, args): | ||||||
|         self.globalPrefix = "" |         self.globalPrefix = "" | ||||||
|         self.changeRange = "" |         self.changeRange = "" | ||||||
|  | @ -829,6 +884,7 @@ class GitSync(Command): | ||||||
|             self.globalPrefix += "/" |             self.globalPrefix += "/" | ||||||
|  |  | ||||||
|         self.getUserMap() |         self.getUserMap() | ||||||
|  |         self.getLabels(); | ||||||
|  |  | ||||||
|         if len(self.changeRange) == 0: |         if len(self.changeRange) == 0: | ||||||
|             try: |             try: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Simon Hausmann
						Simon Hausmann