Split vcs into git_path and commit_id
authorLingchao Xin <lingchaox.xin@intel.com>
Wed, 18 Dec 2013 02:53:42 +0000 (10:53 +0800)
committerLingchao Xin <lingchaox.xin@intel.com>
Wed, 18 Dec 2013 02:55:26 +0000 (10:55 +0800)
Now vcs will hide, we provide git_path and commit_id instead.

And a little more, I reformat json dict structure, more beautiful than
before even though it can not satisfy me, maybe a new way should be
found to take a more pythonic writing.

Change-Id: Id6c065bf99519879f6c796eb23440e50c286b0f5

snapdiff/__init__.py
snapdiff/image.py
snapdiff/repo.py
snapdiff/templates/diff.html

index 5395bfe92ce64afbbdec6d5c999d2c33b157ae57..56367af6c1c5ec31184abbfac4f7f1836a234b5b 100644 (file)
@@ -80,34 +80,82 @@ def diff_to_JSON(old_url, new_url, style='repo'):
 
     obj = {style: {'old': old_url, 'new': new_url},
             'diff': {
-                'added': [{'oldpkg': None, 'newpkg': {'name': _new.name, \
-                        'version': {'epoch': _new.version.epoch, \
-                        'rel': _new.version.rel, 'ver': _new.version.ver}, \
-                        'vcs': _new.version.vcs}, 'codediff': None} \
-                        for _new in added],
-                'removed': [{'oldpkg': {'name': _old.name, \
-                        'version': {'epoch': _old.version.epoch, \
-                        'rel': _old.version.rel, 'ver': _old.version.ver}, \
-                        'vcs': _old.version.vcs}, 'newpkg': None, \
-                        'codediff': None} for _old in removed],
-                'modified': [{'oldpkg': {'name': _old.name, \
-                        'version': {'epoch': _old.version.epoch, \
-                        'rel': _old.version.rel, 'ver': _old.version.ver}, \
-                        'vcs': _old.version.vcs}, \
-                        'newpkg': {'name': _new.name, \
-                        'version': {'epoch': _new.version.epoch, \
-                        'rel': _new.version.rel, 'ver': _new.version.ver},
-                            'vcs': _new.version.vcs}, 'codediff': None} \
-                                    for _old, _new in modified],
-                 'rebuilded': [{'oldpkg': {'name': _old.name, \
-                        'version': {'epoch': _old.version.epoch, \
-                        'rel': _old.version.rel, 'ver': _old.version.ver}, \
-                        'vcs': _old.version.vcs}, \
-                        'newpkg': {'name': _new.name, \
-                        'version': {'epoch': _new.version.epoch, \
-                        'rel': _new.version.rel, 'ver': _new.version.ver},
-                            'vcs': _new.version.vcs}, 'codediff': None} \
-                                    for _old, _new in rebuilded],
+                'added': [
+                    {'oldpkg': None,
+                    'newpkg': {
+                        'name': _new.name,
+                        'version': {
+                            'epoch': _new.version.epoch,
+                            'rel': _new.version.rel,
+                            'ver': _new.version.ver,
+                            },
+                        # we use '#' to split vcs into git_path and commit_id,
+                        # but commit_id maybe contains '#', so split the 1st.
+                        'git_path': _new.version.vcs.split('#', 1)[0],
+                        'commit_id': _new.version.vcs.split('#', 1)[1],
+                        },
+                    'codediff': None,
+                    } for _new in added],
+                'removed': [
+                    {'oldpkg': {
+                        'name': _old.name,
+                        'version': {
+                            'epoch': _old.version.epoch,
+                            'rel': _old.version.rel,
+                            'ver': _old.version.ver,
+                            },
+                        'git_path': _old.version.vcs.split('#', 1)[0],
+                        'commit_id': _old.version.vcs.split('#', 1)[1],
+                        },
+                    'newpkg': None,
+                    'codediff': None,
+                    } for _old in removed],
+                'modified': [
+                    {'oldpkg': {
+                        'name': _old.name,
+                        'version': {
+                            'epoch': _old.version.epoch,
+                            'rel': _old.version.rel,
+                            'ver': _old.version.ver,
+                            },
+                        'git_path': _old.version.vcs.split('#', 1)[0],
+                        'commit_id': _old.version.vcs.split('#', 1)[1],
+                        },
+                    'newpkg': {
+                        'name': _new.name,
+                        'version': {
+                            'epoch': _new.version.epoch,
+                            'rel': _new.version.rel,
+                            'ver': _new.version.ver,
+                            },
+                        'git_path': _new.version.vcs.split('#', 1)[0],
+                        'commit_id': _new.version.vcs.split('#', 1)[1],
+                        },
+                    'codediff': None,
+                    } for _old, _new in modified],
+                 'rebuilded': [{
+                     'oldpkg': {
+                         'name': _old.name,
+                         'version': {
+                             'epoch': _old.version.epoch,
+                             'rel': _old.version.rel,
+                             'ver': _old.version.ver,
+                             },
+                        'git_path': _old.version.vcs.split('#', 1)[0],
+                        'commit_id': _old.version.vcs.split('#', 1)[1],
+                        },
+                     'newpkg': {
+                         'name': _new.name,
+                         'version': {
+                             'epoch': _new.version.epoch,
+                             'rel': _new.version.rel,
+                             'ver': _new.version.ver,
+                             },
+                         'git_path': _new.version.vcs.split('#', 1)[0],
+                         'commit_id': _new.version.vcs.split('#', 1)[1],
+                         },
+                     'codediff': None,
+                     } for _old, _new in rebuilded],
                 }
             }
 
index 3146768d98dbb69700b061215115c66f18467d6c..c22efc049eb980c2913ad96fff45b8042480fdd5 100644 (file)
@@ -58,7 +58,9 @@ def packages(url):
             package_info.version.epoch = epoch
             package_info.version.ver = ver
             package_info.version.rel = rel
-            package_info.version.vcs = vcs
+            # maybe it occurs no vcs tag or vcs tag is 'None' not None in
+            # rpm package, so give it a '#' to split it into ['', ''] later.
+            package_info.version.vcs = ['#', vcs][vcs and vcs != 'None']
             packages_info[name].append(package_info)
 
     return packages_info
index 60429e54f57f9be7cf7da76e2b4dee4883c49c72..2ab027058a67a1b5cfe7480f41f84f127efc536d 100644 (file)
@@ -64,6 +64,8 @@ class Repo(object):
         packages_info = JsonDict()
 
         for package in self._primary.package:
+            # vcs may be None, then give it a '#'.
+            package.version.vcs = package.version.vcs or '#'
             if packages_info[package.name] is None:
                 setattr(packages_info, package.name, [package])
             else:
index 968ae953b0e8fd0092a45f6633980b64c5a3875f..708e6d61db7c4699fe91365aa4b23b7962159560 100644 (file)
     {% if diff['added'] %}
         <table>
             <tr>
-                <th>Package</th><th>Version</th><th>VCS</th>
+                <th>Package</th><th>Version</th><th>GitPath</th><th>CommitId</th>
             </tr>
             {% for item in diff['added'] %}
                 <tr>
                     <td>{{ item['newpkg']['name'] }}</td>
                     <td>{{ item['newpkg']['version']['ver'] }}-{{item['newpkg']['version']['rel']}}</td>
-                    <td>{{ item['newpkg']['vcs'] }}</td>
+                    <td>{{ item['newpkg']['git_path'] }}</td>
+                    <td>{{ item['newpkg']['commit_id'] }}</td>
                 </tr>
             {% endfor %}
         </table>
     {% if diff['removed'] %}
          <table>
             <tr>
-                <th>Package</th><th>Version</th><th>VCS</th>
+                <th>Package</th><th>Version</th><th>GitPath</th><th>CommitId</th>
             </tr>
             {% for item in diff['removed'] %}
                 <tr>
                     <td>{{ item['oldpkg']['name'] }}</td>
                     <td>{{ item['oldpkg']['version']['ver'] }}-{{item['oldpkg']['version']['rel']}}</td>
-                    <td>{{ item['oldpkg']['vcs'] }}</td>
+                    <td>{{ item['oldpkg']['git_path'] }}</td>
+                    <td>{{ item['oldpkg']['commit_id'] }}</td>
                 </tr>
             {% endfor %}
         </table>
@@ -69,7 +71,7 @@
     {% if diff['modified'] %}
          <table>
             <tr>
-                <th>Package</th><th>Version</th><th>VCS</th>
+                <th>Package</th><th>Version</th><th>GitPath</th><th>CommitId</th>
             </tr>
             {% for item in diff['modified'] %}
                 <tr>
                     <td>{{ item['oldpkg']['version']['ver'] }}-{{item['oldpkg']['version']['rel']}}~{{ item['newpkg']['version']['ver'] }}-{{item['newpkg']['version']['rel']}}</td>
                     <td>
                         <ul>
-                            <li>{{ item['oldpkg']['vcs'] }}</li>
-                            <li>{{ item['newpkg']['vcs'] }}</li>
+                            <li>{{ item['oldpkg']['git_path'] }}</li>
+                            <li>{{ item['newpkg']['git_path'] }}</li>
+                        </ul>
+                    </td>
+                    <td>
+                        <ul>
+                            <li>{{ item['oldpkg']['commit_id'] }}</li>
+                            <li>{{ item['newpkg']['commit_id'] }}</li>
                         </ul>
                     </td>
                 </tr>
     {% if diff['rebuilded'] %}
          <table>
             <tr>
-                <th>Package</th><th>Version</th><th>VCS</th>
+                <th>Package</th><th>Version</th><th>GitPath</th><th>CommitId</th>
             </tr>
             {% for item in diff['rebuilded'] %}
                 <tr>
                     <td>{{ item['oldpkg']['name'] }}</td>
                     <td>{{ item['oldpkg']['version']['ver'] }}-{{item['oldpkg']['version']['rel']}}~{{ item['newpkg']['version']['ver'] }}-{{item['newpkg']['version']['rel']}}</td>
-                    <td>{{ item['oldpkg']['vcs'] }}</td>
+                    <td>{{ item['oldpkg']['git_path'] }}</td>
+                    <td>{{ item['oldpkg']['commit_id'] }}</td>
                 </tr>
             {% endfor %}
         </table>