[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH] Extract branch info from Vcs-Git, ignore for now



Closes: #886372
---
 distro_tracker/core/tests/tests_utils.py | 13 +++++++++++++
 distro_tracker/core/utils/packages.py    |  8 +++++++-
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/distro_tracker/core/tests/tests_utils.py b/distro_tracker/core/tests/tests_utils.py
index 6ad6f8a..27ec1ac 100644
--- a/distro_tracker/core/tests/tests_utils.py
+++ b/distro_tracker/core/tests/tests_utils.py
@@ -716,6 +716,19 @@ class PackageUtilsTests(SimpleTestCase):
             extract_vcs_information(d)
         )
 
+        # Git with branch info
+        d = {
+            'Vcs-Git': vcs_url + ' -b some-branch'
+        }
+        self.assertDictEqual(
+            {
+                'type': 'git',
+                'url': vcs_url,
+                'branch': 'some-branch',
+            },
+            extract_vcs_information(d)
+        )
+
         # Empty dict
         self.assertDictEqual({}, extract_vcs_information({}))
         # No vcs information in the dict
diff --git a/distro_tracker/core/utils/packages.py b/distro_tracker/core/utils/packages.py
index bf9adc3..66004de 100644
--- a/distro_tracker/core/utils/packages.py
+++ b/distro_tracker/core/utils/packages.py
@@ -21,6 +21,7 @@ import os
 import apt
 import shutil
 import apt_pkg
+import re
 import subprocess
 import tarfile
 
@@ -55,7 +56,7 @@ def extract_vcs_information(stanza):
     :type stanza: dict
 
     :returns: VCS information regarding the package. Contains the following
-        keys: type[, browser, url]
+        keys: type[, browser, url, branch]
     :rtype: dict
     """
     vcs = {}
@@ -66,6 +67,11 @@ def extract_vcs_information(stanza):
         elif key.startswith('vcs-'):
             vcs['type'] = key[4:]
             vcs['url'] = value
+            if vcs['type'] == 'git':
+                match = re.match(r'(?P<url>.*?)\s+-b\s*(?P<branch>\S+)', value)
+                if match:
+                    vcs['url'] = match.group('url')
+                    vcs['branch'] = match.group('branch')
     return vcs
 
 
-- 
2.14.1


Reply to: