threads / patch / 27291

patchgit-p4: small improvements to user-preservation

Subject: [PATCH] git-p4: small improvements to user-preservation

## tl;dr

3 messages between May 7, 2011 and May 9, 2011. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Luke Diamand· May 7, 2011, 10:19 UTC · lore
. Slightly more paranoid checking of results from 'p4 change'
. Remove superfluous "-G"
. Don't modify the username if it is unchanged.
. Add a comment in the change template to show what is
  going to be done.
Luke Diamand (1):
  git-p4: small improvements to user-preservation
 contrib/fast-import/git-p4 |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)
Luke Diamand· May 7, 2011, 10:19 UTC · re: Luke Diamand · lore
. Slightly more paranoid checking of results from 'p4 change'
. Remove superfluous "-G"
. Don't modify the username if it is unchanged.
. Add a comment in the change template to show what is
  going to be done.
Signed-off-by: Luke Diamand <luke@diamand.org>
---
 contrib/fast-import/git-p4 |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)
Show changes to contrib/fast-import/git-p4 +14 −5
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 36e3d87..e66a7df 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -690,10 +690,15 @@ class P4Submit(Command, P4UserMap):
     def modifyChangelistUser(self, changelist, newUser):
         # fixup the user field of a changelist after it has been submitted.
         changes = p4CmdList("change -o %s" % changelist)
-        for c in changes:
-            if c.has_key('User'):
-                c['User'] = newUser
-        input = marshal.dumps(changes[0])
+        if len(changes) != 1:
+            die("Bad output from p4 change modifying %s to user %s" %
+                (changelist, newUser))
+
+        c = changes[0]
+        if c['User'] == newUser: return   # nothing to do
+        c['User'] = newUser
+        input = marshal.dumps(c)
+
         result = p4CmdList("change -f -i", stdin=input)
         for r in result:
             if r.has_key('code'):
@@ -707,7 +712,7 @@ class P4Submit(Command, P4UserMap):
     def canChangeChangelists(self):
         # check to see if we have p4 admin or super-user permissions, either of
         # which are required to modify changelists.
-        results = p4CmdList("-G protects %s" % self.depotPath)
+        results = p4CmdList("protects %s" % self.depotPath)
         for r in results:
             if r.has_key('perm'):
                 if r['perm'] == 'admin':
@@ -865,6 +870,10 @@ class P4Submit(Command, P4UserMap):
 
         if self.interactive:
             submitTemplate = self.prepareLogMessage(template, logMessage)
+
+            if self.preserveUser:
+               submitTemplate = submitTemplate + ("\n######## Actual user %s, modified after commit\n" % p4User)
+
             if os.environ.has_key("P4DIFF"):
                 del(os.environ["P4DIFF"])
             diff = ""
-- 
1.7.1
Junio C Hamano· May 9, 2011, 04:50 UTC · re: Luke Diamand · lore

Re: [PATCH] git-p4: small improvements to user-preservation

Luke Diamand <luke@diamand.org> writes:
Show 7 quoted lines
> . Slightly more paranoid checking of results from 'p4 change'
> . Remove superfluous "-G"
> . Don't modify the username if it is unchanged.
> . Add a comment in the change template to show what is
>   going to be done.
>
> Signed-off-by: Luke Diamand <luke@diamand.org>
Thanks.

The patch text was different from the interdiff between the previous two patches that got Ack from Pete, so I didn't realize this was your incremental conversion until now. Will queue this one on 'pu' but I'd like an Ack from Pete or other git-p4 folks before merging this down to 'next'.

← back to recent threads