Patchwork combo-tool: simply branch/commit validation logic

login
register
mail settings
Submitter Ross Burton
Date Nov. 18, 2013, 5:39 p.m.
Message ID <1384796370-8899-1-git-send-email-ross.burton@intel.com>
Download mbox | patch
Permalink /patch/61921/
State New
Headers show

Comments

Ross Burton - Nov. 18, 2013, 5:39 p.m.
Simply the branch/revision logic by using git-merge-base.

Signed-off-by: Ross Burton <ross.burton@intel.com>
---
 scripts/combo-layer |   13 ++-----------
 1 file changed, 2 insertions(+), 11 deletions(-)
Gary Thomas - Nov. 18, 2013, 5:42 p.m.
On 2013-11-18 10:39, Ross Burton wrote:
> Simply the branch/revision logic by using git-merge-base.

Did you mean 'simplify'?

>
> Signed-off-by: Ross Burton <ross.burton@intel.com>
> ---
>   scripts/combo-layer |   13 ++-----------
>   1 file changed, 2 insertions(+), 11 deletions(-)
>
> diff --git a/scripts/combo-layer b/scripts/combo-layer
> index ae97471..2c8ba07 100755
> --- a/scripts/combo-layer
> +++ b/scripts/combo-layer
> @@ -283,23 +283,14 @@ def drop_to_shell(workdir=None):
>
>   def check_rev_branch(component, repodir, rev, branch):
>       try:
> -        actualbranch = runcmd("git branch --contains %s" % rev, repodir, printerr=False)
> +        mergepoint = runcmd("git merge-base %s %s" % (rev, branch), repodir, printerr=False).rstrip()
>       except subprocess.CalledProcessError as e:
>           if e.returncode == 129:
>               actualbranch = ""
>           else:
>               raise
>
> -    if not actualbranch:
> -        logger.error("%s: specified revision %s is invalid!" % (component, rev))
> -        return False
> -
> -    branches = []
> -    branchlist = actualbranch.split("\n")
> -    for b in branchlist:
> -        branches.append(b.strip().split(' ')[-1])
> -
> -    if branch not in branches:
> +    if mergepoint != rev:
>           logger.error("%s: specified revision %s is not on specified branch %s!" % (component, rev, branch))
>           return False
>       return True
>
Ross Burton - Nov. 18, 2013, 5:49 p.m.
On 18 November 2013 17:42, Gary Thomas <gary@mlbassoc.com> wrote:
> On 2013-11-18 10:39, Ross Burton wrote:
>>
>> Simply the branch/revision logic by using git-merge-base.
>
> Did you mean 'simplify'?

Yes. :)

Ross

Patch

diff --git a/scripts/combo-layer b/scripts/combo-layer
index ae97471..2c8ba07 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -283,23 +283,14 @@  def drop_to_shell(workdir=None):
 
 def check_rev_branch(component, repodir, rev, branch):
     try:
-        actualbranch = runcmd("git branch --contains %s" % rev, repodir, printerr=False)
+        mergepoint = runcmd("git merge-base %s %s" % (rev, branch), repodir, printerr=False).rstrip()
     except subprocess.CalledProcessError as e:
         if e.returncode == 129:
             actualbranch = ""
         else:
             raise
 
-    if not actualbranch:
-        logger.error("%s: specified revision %s is invalid!" % (component, rev))
-        return False
-
-    branches = []
-    branchlist = actualbranch.split("\n")
-    for b in branchlist:
-        branches.append(b.strip().split(' ')[-1])
-
-    if branch not in branches:
+    if mergepoint != rev:
         logger.error("%s: specified revision %s is not on specified branch %s!" % (component, rev, branch))
         return False
     return True