[glib: 2/3] It seems the gitlab CI performs only a shallow clone of 1-depth and so checkout only the HEAD of the




commit bbe47331a57458adf0c29a4143a77150424a6e15
Author: Frederic Martinsons <frederic martinsons sigfox com>
Date:   Mon Jan 11 17:04:52 2021 +0100

    It seems the gitlab CI performs only a shallow clone of 1-depth
    and so checkout only the HEAD of the branch.
    This leads to not being able to find an ancestor since there is only one
    new commit. I presume that when it worked, it was because of specific
    settings of some users.
    
    Now we fetch (with the same depth as the target branch) the source branch
    and use it to compare sha1 and find the common ancestor.
    
    Closes #2292
    
    Signed-off-by: Frederic Martinsons <frederic martinsons sigfox com>

 .gitlab-ci/search-common-ancestor.sh | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
---
diff --git a/.gitlab-ci/search-common-ancestor.sh b/.gitlab-ci/search-common-ancestor.sh
index d09f7d3f8..76521f402 100755
--- a/.gitlab-ci/search-common-ancestor.sh
+++ b/.gitlab-ci/search-common-ancestor.sh
@@ -17,9 +17,15 @@ git fetch --shallow-since="$(date --date="${ancestor_horizon} days ago" +%Y-%m-%
 # Work out the newest common ancestor between the detached HEAD that this CI job
 # has checked out, and the upstream target branch (which will typically be
 # `upstream/master` or `upstream/glib-2-62`).
-# `${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}` is only defined if we’re running in
-# a merge request pipeline; fall back to `${CI_DEFAULT_BRANCH}` otherwise.
-newest_common_ancestor_sha=$(diff --old-line-format='' --new-line-format='' <(git rev-list --first-parent 
"upstream/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME:-${CI_DEFAULT_BRANCH}}") <(git rev-list --first-parent HEAD) 
| head -1)
+# `${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}` or `${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}`
+# are only defined if we’re running in a merge request pipeline,
+# fall back to `${CI_DEFAULT_BRANCH}` or `${CI_COMMIT_BRANCH}` respectively
+# otherwise.
+
+source_branch="${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-${CI_COMMIT_BRANCH}}"
+git fetch --shallow-since="$(date --date="${ancestor_horizon} days ago" +%Y-%m-%d)" origin "${source_branch}"
+
+newest_common_ancestor_sha=$(diff --old-line-format='' --new-line-format='' <(git rev-list --first-parent 
"upstream/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME:-${CI_DEFAULT_BRANCH}}") <(git rev-list --first-parent 
"origin/${source_branch}") | head -1)
 if [ -z "${newest_common_ancestor_sha}" ]; then
     echo "Couldn’t find common ancestor with upstream master. This typically"
     echo "happens if you branched from master a long time ago. Please update"


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