git-p4: importing labels should cope with missing owner
In p4, the Owner field is optional. If it is missing, construct something sensible rather than crashing. Signed-off-by: Luke Diamand <luke@diamand.org> Acked-by: Pete Wyckoff <pw@padd.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
a37a8de8d6
commit
affb474f6a
@ -563,6 +563,26 @@ class Command:
|
|||||||
class P4UserMap:
|
class P4UserMap:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.userMapFromPerforceServer = False
|
self.userMapFromPerforceServer = False
|
||||||
|
self.myP4UserId = None
|
||||||
|
|
||||||
|
def p4UserId(self):
|
||||||
|
if self.myP4UserId:
|
||||||
|
return self.myP4UserId
|
||||||
|
|
||||||
|
results = p4CmdList("user -o")
|
||||||
|
for r in results:
|
||||||
|
if r.has_key('User'):
|
||||||
|
self.myP4UserId = r['User']
|
||||||
|
return r['User']
|
||||||
|
die("Could not find your p4 user id")
|
||||||
|
|
||||||
|
def p4UserIsMe(self, p4User):
|
||||||
|
# return True if the given p4 user is actually me
|
||||||
|
me = self.p4UserId()
|
||||||
|
if not p4User or p4User != me:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
def getUserCacheFilename(self):
|
def getUserCacheFilename(self):
|
||||||
home = os.environ.get("HOME", os.environ.get("USERPROFILE"))
|
home = os.environ.get("HOME", os.environ.get("USERPROFILE"))
|
||||||
@ -700,7 +720,6 @@ class P4Submit(Command, P4UserMap):
|
|||||||
self.verbose = False
|
self.verbose = False
|
||||||
self.preserveUser = gitConfig("git-p4.preserveUser").lower() == "true"
|
self.preserveUser = gitConfig("git-p4.preserveUser").lower() == "true"
|
||||||
self.isWindows = (platform.system() == "Windows")
|
self.isWindows = (platform.system() == "Windows")
|
||||||
self.myP4UserId = None
|
|
||||||
|
|
||||||
def check(self):
|
def check(self):
|
||||||
if len(p4CmdList("opened ...")) > 0:
|
if len(p4CmdList("opened ...")) > 0:
|
||||||
@ -808,25 +827,6 @@ class P4Submit(Command, P4UserMap):
|
|||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def p4UserId(self):
|
|
||||||
if self.myP4UserId:
|
|
||||||
return self.myP4UserId
|
|
||||||
|
|
||||||
results = p4CmdList("user -o")
|
|
||||||
for r in results:
|
|
||||||
if r.has_key('User'):
|
|
||||||
self.myP4UserId = r['User']
|
|
||||||
return r['User']
|
|
||||||
die("Could not find your p4 user id")
|
|
||||||
|
|
||||||
def p4UserIsMe(self, p4User):
|
|
||||||
# return True if the given p4 user is actually me
|
|
||||||
me = self.p4UserId()
|
|
||||||
if not p4User or p4User != me:
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
return True
|
|
||||||
|
|
||||||
def prepareSubmitTemplate(self):
|
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
|
||||||
template = ""
|
template = ""
|
||||||
@ -1664,6 +1664,12 @@ class P4Sync(Command, P4UserMap):
|
|||||||
if self.stream_file.has_key('depotFile'):
|
if self.stream_file.has_key('depotFile'):
|
||||||
self.streamOneP4File(self.stream_file, self.stream_contents)
|
self.streamOneP4File(self.stream_file, self.stream_contents)
|
||||||
|
|
||||||
|
def make_email(self, userid):
|
||||||
|
if userid in self.users:
|
||||||
|
return self.users[userid]
|
||||||
|
else:
|
||||||
|
return "%s <a@b>" % userid
|
||||||
|
|
||||||
def commit(self, details, files, branch, branchPrefixes, parent = ""):
|
def commit(self, details, files, branch, branchPrefixes, parent = ""):
|
||||||
epoch = details["time"]
|
epoch = details["time"]
|
||||||
author = details["user"]
|
author = details["user"]
|
||||||
@ -1687,10 +1693,7 @@ class P4Sync(Command, P4UserMap):
|
|||||||
committer = ""
|
committer = ""
|
||||||
if author not in self.users:
|
if author not in self.users:
|
||||||
self.getUserMapFromPerforceServer()
|
self.getUserMapFromPerforceServer()
|
||||||
if author in self.users:
|
committer = "%s %s %s" % (self.make_email(author), epoch, self.tz)
|
||||||
committer = "%s %s %s" % (self.users[author], epoch, self.tz)
|
|
||||||
else:
|
|
||||||
committer = "%s <a@b> %s %s" % (author, epoch, self.tz)
|
|
||||||
|
|
||||||
self.gitStream.write("committer %s\n" % committer)
|
self.gitStream.write("committer %s\n" % committer)
|
||||||
|
|
||||||
@ -1735,11 +1738,15 @@ class P4Sync(Command, P4UserMap):
|
|||||||
self.gitStream.write("from %s\n" % branch)
|
self.gitStream.write("from %s\n" % branch)
|
||||||
|
|
||||||
owner = labelDetails["Owner"]
|
owner = labelDetails["Owner"]
|
||||||
tagger = ""
|
|
||||||
if author in self.users:
|
# Try to use the owner of the p4 label, or failing that,
|
||||||
tagger = "%s %s %s" % (self.users[owner], epoch, self.tz)
|
# the current p4 user id.
|
||||||
|
if owner:
|
||||||
|
email = self.make_email(owner)
|
||||||
else:
|
else:
|
||||||
tagger = "%s <a@b> %s %s" % (owner, epoch, self.tz)
|
email = self.make_email(self.p4UserId())
|
||||||
|
tagger = "%s %s %s" % (email, epoch, self.tz)
|
||||||
|
|
||||||
self.gitStream.write("tagger %s\n" % tagger)
|
self.gitStream.write("tagger %s\n" % tagger)
|
||||||
|
|
||||||
description = labelDetails["Description"]
|
description = labelDetails["Description"]
|
||||||
|
Loading…
Reference in New Issue
Block a user