[Bf-blender-cvs] [da4796ebf7e] master: Build: change make update to not print errors regarding submodule branches

Brecht Van Lommel noreply at git.blender.org
Mon Sep 20 14:07:03 CEST 2021


Commit: da4796ebf7ea728dc81ff4b3c62410230520977a
Author: Brecht Van Lommel
Date:   Mon Sep 20 13:17:01 2021 +0200
Branches: master
https://developer.blender.org/rBda4796ebf7ea728dc81ff4b3c62410230520977a

Build: change make update to not print errors regarding submodule branches

Instead of trying to checkout non-existent branches and getting confusing fatal
error prints, check if the branch exists first.

Ref D12560

===================================================================

M	build_files/utils/make_update.py
M	build_files/utils/make_utils.py

===================================================================

diff --git a/build_files/utils/make_update.py b/build_files/utils/make_update.py
index f653639ec6d..30ef090efbb 100755
--- a/build_files/utils/make_update.py
+++ b/build_files/utils/make_update.py
@@ -200,16 +200,20 @@ def submodules_update(args, release_version, branch):
             if msg:
                 skip_msg += submodule_path + " skipped: " + msg + "\n"
             else:
-                # We are using `exit_on_error=False` here because sub-modules are allowed to not have requested branch,
-                # in which case falling back to default back-up branch is fine.
-                if make_utils.git_branch(args.git_command) != submodule_branch:
-                    call([args.git_command, "fetch", "origin"])
-                    call([args.git_command, "checkout", submodule_branch], exit_on_error=False)
-                call([args.git_command, "pull", "--rebase", "origin", submodule_branch], exit_on_error=False)
-                # If we cannot find the specified branch for this submodule, fallback to default one (aka master).
-                if make_utils.git_branch(args.git_command) != submodule_branch:
-                    call([args.git_command, "checkout", submodule_branch_fallback])
-                    call([args.git_command, "pull", "--rebase", "origin", submodule_branch_fallback])
+                # Find a matching branch that exists.
+                call([args.git_command, "fetch", "origin"])
+                if make_utils.git_branch_exists(args.git_command, submodule_branch):
+                    pass
+                elif make_utils.git_branch_exists(args.git_command, submodule_branch_fallback):
+                    submodule_branch = submodule_branch_fallback
+                else:
+                    submodule_branch = None
+
+                # Switch to branch and pull.
+                if submodule_branch:
+                    if make_utils.git_branch(args.git_command) != submodule_branch:
+                        call([args.git_command, "checkout", submodule_branch])
+                    call([args.git_command, "pull", "--rebase", "origin", submodule_branch])
         finally:
             os.chdir(cwd)
 
diff --git a/build_files/utils/make_utils.py b/build_files/utils/make_utils.py
index db352ff7e16..9def0059ceb 100755
--- a/build_files/utils/make_utils.py
+++ b/build_files/utils/make_utils.py
@@ -8,14 +8,19 @@ import subprocess
 import sys
 
 
-def call(cmd, exit_on_error=True):
-    print(" ".join(cmd))
+def call(cmd, exit_on_error=True, silent=False):
+    if not silent:
+        print(" ".join(cmd))
 
     # Flush to ensure correct order output on Windows.
     sys.stdout.flush()
     sys.stderr.flush()
 
-    retcode = subprocess.call(cmd)
+    if silent:
+        retcode = subprocess.call(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+    else:
+        retcode = subprocess.call(cmd)
+
     if exit_on_error and retcode != 0:
         sys.exit(retcode)
     return retcode
@@ -38,6 +43,11 @@ def check_output(cmd, exit_on_error=True):
     return output.strip()
 
 
+def git_branch_exists(git_command, branch):
+    return call([git_command, "rev-parse", "--verify", branch], exit_on_error=False, silent=True) == 0 or \
+           call([git_command, "rev-parse", "--verify", "remotes/origin/" + branch], exit_on_error=False, silent=True) == 0
+
+
 def git_branch(git_command):
     # Get current branch name.
     try:



More information about the Bf-blender-cvs mailing list