changeset 26547:b9be8ab6e628

patch: move 'extract' return to a dictionnary The final goal here is to be able to parse, return and process arbitrary data from patch. This mirror the recently added ability to add arbitrary data to patch headers. The first step is to return something more flexible, so we return a dict without changing any other logic.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Tue, 06 Oct 2015 02:01:53 -0700
parents 500386e65759
children 25a58881efdd
files mercurial/cmdutil.py mercurial/patch.py
diffstat 2 files changed, 34 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Tue Oct 06 01:49:04 2015 -0700
+++ b/mercurial/cmdutil.py	Tue Oct 06 02:01:53 2015 -0700
@@ -850,8 +850,15 @@
     """
     # avoid cycle context -> subrepo -> cmdutil
     import context
-    tmpname, message, user, date, branch, nodeid, p1, p2 = \
-        patch.extract(ui, hunk)
+    extractdata = patch.extract(ui, hunk)
+    tmpname = extractdata.get('filename')
+    message = extractdata.get('message')
+    user = extractdata.get('user')
+    date = extractdata.get('date')
+    branch = extractdata.get('branch')
+    nodeid = extractdata.get('nodeid')
+    p1 = extractdata.get('p1')
+    p2 = extractdata.get('p2')
 
     update = not opts.get('bypass')
     strip = opts["strip"]
--- a/mercurial/patch.py	Tue Oct 06 01:49:04 2015 -0700
+++ b/mercurial/patch.py	Tue Oct 06 02:01:53 2015 -0700
@@ -156,8 +156,16 @@
 
     patch can be a normal patch or contained in an email message.
 
-    return tuple (filename, message, user, date, branch, node, p1, p2).
-    Any item in the returned tuple can be None. If filename is None,
+    return a dictionnary. Standard keys are:
+      - filename,
+      - message,
+      - user,
+      - date,
+      - branch,
+      - node,
+      - p1,
+      - p2.
+    Any item can be missing from the dictionary. If filename is mising,
     fileobj did not contain a patch. Caller must unlink filename when done.'''
 
     # attempt to detect the start of a patch
@@ -167,6 +175,7 @@
                         r'---[ \t].*?^\+\+\+[ \t]|'
                         r'\*\*\*[ \t].*?^---[ \t])', re.MULTILINE|re.DOTALL)
 
+    data = {}
     fd, tmpname = tempfile.mkstemp(prefix='hg-patch-')
     tmpfp = os.fdopen(fd, 'w')
     try:
@@ -256,7 +265,11 @@
     tmpfp.close()
     if not diffs_seen:
         os.unlink(tmpname)
-        return None, message, user, date, branch, None, None, None
+        data['message'] = message
+        data['user'] = user
+        data['date'] = date
+        data['branch'] = branch
+        return data
 
     if parents:
         p1 = parents.pop(0)
@@ -268,7 +281,15 @@
     else:
         p2 = None
 
-    return tmpname, message, user, date, branch, nodeid, p1, p2
+    data['filename'] = tmpname
+    data['message'] = message
+    data['user'] = user
+    data['date'] = date
+    data['branch'] = branch
+    data['nodeid'] = nodeid
+    data['p1'] = p1
+    data['p2'] = p2
+    return data
 
 class patchmeta(object):
     """Patched file metadata