summaryrefslogtreecommitdiff
path: root/git-update
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@igalia.com>2018-11-05 09:43:50 -0300
committerThibault Saunier <tsaunier@igalia.com>2018-11-05 09:43:50 -0300
commit57f884495823dc64405528640d3d4794c11250dc (patch)
tree10b3e3c37fae11370e987818c6eacb3949729d53 /git-update
parent52c0086c5a92568291a92fe1bce6cdbffb25ac85 (diff)
downloadgstreamer-57f884495823dc64405528640d3d4794c11250dc.tar.gz
update: Ensure that a revision is used when updating a detached repo
For the case it was not guaranteed
Diffstat (limited to 'git-update')
-rwxr-xr-xgit-update21
1 files changed, 13 insertions, 8 deletions
diff --git a/git-update b/git-update
index 87e6f7c585..83d2006060 100755
--- a/git-update
+++ b/git-update
@@ -33,6 +33,18 @@ def manifest_get_commits(manifest):
return res
+def ensure_revision_if_necessary(repo_dir, revision):
+ """
+ Makes sure that @revision is set if the current repo is detached.
+ """
+ if not revision:
+ ret = git('-C', repo_dir, 'rev-parse', '--symbolic-full-name', 'HEAD')
+ if ret.strip() == 'HEAD':
+ revision = git('-C', repo_dir, 'rev-parse', 'HEAD').strip()
+
+ return revision
+
+
def update_subprojects(repos_commits, no_interaction=False):
subprojects_dir = os.path.join(SCRIPTDIR, "subprojects")
for repo_name in os.listdir(subprojects_dir):
@@ -41,13 +53,6 @@ def update_subprojects(repos_commits, no_interaction=False):
continue
revision, args = repos_commits.get(repo_name, [None, []])
- if not revision:
- # If we're on a detached head because the revision= value in the
- # wrap file is a commit, don't try to git pull --rebase because
- # that will always fail.
- ret = git('-C', repo_dir, 'rev-parse', '--symbolic-full-name', 'HEAD')
- if ret.strip() == 'HEAD':
- revision = git('-C', repo_dir, 'rev-parse', 'HEAD').strip()
if not update_repo(repo_name, repo_dir, revision, no_interaction, args):
return False
@@ -55,7 +60,7 @@ def update_subprojects(repos_commits, no_interaction=False):
def update_repo(repo_name, repo_dir, revision, no_interaction, fetch_args=[], recurse_i=0):
- print("Updating %s..." % repo_name)
+ revision = ensure_revision_if_necessary(repo_dir, revision)
git("config", "rebase.autoStash", "true", repository_path=repo_dir)
try:
if revision: