summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-06-08 14:02:02 -0400
committerBen Gamari <ben@smart-cactus.org>2019-06-08 14:02:02 -0400
commitb2f106f5544e4c71bb07df4acb9d2b5ed184a7e3 (patch)
treed1df8f53e99817f8d87b817f4baa81bf3dcaea51
parent709290b01c3c63137d863d6fdd97dabdfe47eb29 (diff)
downloadhaskell-b2f106f5544e4c71bb07df4acb9d2b5ed184a7e3.tar.gz
gitlab-ci: Disable shallow clones
Previously we were passing `--unshallow` to `git fetch` in the linting rules to ensure that the base commit which we were linting with respect to was available. However, this breaks due to GitLab's re-use of working directories since `git fetch --unshallow` fails on a repository which is not currently shallow. Given that `git fetch --unshallow` circumvents the efficiencies provided by shallow clones anyways, let's just disable them entirely. There is no documented way to do disable shallow clones but on checking the GitLab implementation it seems that setting `GIT_DEPTH=0` should do the trick.
-rw-r--r--.gitlab-ci.yml14
1 files changed, 5 insertions, 9 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d2e28622aa..87446222e0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,6 +8,9 @@ variables:
# .gitlab/win32-init.sh.
WINDOWS_TOOLCHAIN_VERSION: 1
+ # Disable shallow clones; they break our linting rules
+ GIT_DEPTH: 0
+
before_script:
- python3 .gitlab/fix-submodules.py
- git submodule sync --recursive
@@ -52,13 +55,7 @@ ghc-linters:
stage: lint
image: "registry.gitlab.haskell.org/ghc/ci-images/linters:$DOCKER_REV"
script:
- # Note [Unshallow clone for linting]
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # GitLab creates a shallow clone which means that we may not have the base
- # commit of the MR being tested (e.g. if the MR is quite old), causing `git
- # merge-base` to fail. Passing `--unshallow` to `git fetch` ensures that
- # we have the entire history.
- - git fetch --unshallow "$CI_MERGE_REQUEST_PROJECT_URL" $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
+ - git fetch "$CI_MERGE_REQUEST_PROJECT_URL" $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
- base="$(git merge-base FETCH_HEAD $CI_COMMIT_SHA)"
- "echo Linting changes between $base..$CI_COMMIT_SHA"
# - validate-commit-msg .git $(git rev-list $base..$CI_COMMIT_SHA)
@@ -80,8 +77,7 @@ ghc-linters:
stage: lint
image: "registry.gitlab.haskell.org/ghc/ci-images/linters:$DOCKER_REV"
script:
- # See Note [Unshallow clone for linting]
- - git fetch --unshallow "$CI_MERGE_REQUEST_PROJECT_URL" $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
+ - git fetch "$CI_MERGE_REQUEST_PROJECT_URL" $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
- base="$(git merge-base FETCH_HEAD $CI_COMMIT_SHA)"
- "echo Linting changes between $base..$CI_COMMIT_SHA"
- submodchecker .git $(git rev-list $base..$CI_COMMIT_SHA)