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