diff mbox series

gitlab: use --refetch in check-patch/check-dco jobs

Message ID 20250225110525.2209854-1-berrange@redhat.com (mailing list archive)
State New
Headers show
Series gitlab: use --refetch in check-patch/check-dco jobs | expand

Commit Message

Daniel P. Berrangé Feb. 25, 2025, 11:05 a.m. UTC
When gitlab initializes the repo checkout for a CI job, it will have
done a shallow clone with only partial history. Periodically the objects
that are omitted cause trouble with the check-patch/check-dco jobs. This
is exhibited as reporting strange errors being unable to fetch certain
objects that are known to exist.

Passing the --refetch flag to 'git fetch' causes it to not assume the
local checkout has all common objects and thus re-fetch everything that
is needed. This appears to solve the check-patch/check-dco job failures.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 .gitlab-ci.d/check-dco.py   | 2 +-
 .gitlab-ci.d/check-patch.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Michael S. Tsirkin Feb. 25, 2025, 12:20 p.m. UTC | #1
On Tue, Feb 25, 2025 at 11:05:25AM +0000, Daniel P. Berrangé wrote:
> When gitlab initializes the repo checkout for a CI job, it will have
> done a shallow clone with only partial history. Periodically the objects
> that are omitted cause trouble with the check-patch/check-dco jobs. This
> is exhibited as reporting strange errors being unable to fetch certain
> objects that are known to exist.
> 
> Passing the --refetch flag to 'git fetch' causes it to not assume the
> local checkout has all common objects and thus re-fetch everything that
> is needed. This appears to solve the check-patch/check-dco job failures.
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

Thanks!

Acked-by: Michael S. Tsirkin <mst@redhat.com>

> ---
>  .gitlab-ci.d/check-dco.py   | 2 +-
>  .gitlab-ci.d/check-patch.py | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/.gitlab-ci.d/check-dco.py b/.gitlab-ci.d/check-dco.py
> index 70dec7d6ee..2fd56683dc 100755
> --- a/.gitlab-ci.d/check-dco.py
> +++ b/.gitlab-ci.d/check-dco.py
> @@ -21,7 +21,7 @@
>  
>  print(f"adding upstream git repo @ {repourl}")
>  subprocess.check_call(["git", "remote", "add", "check-dco", repourl])
> -subprocess.check_call(["git", "fetch", "check-dco", "master"])
> +subprocess.check_call(["git", "fetch", "--refetch", "check-dco", "master"])
>  
>  ancestor = subprocess.check_output(["git", "merge-base",
>                                      "check-dco/master", "HEAD"],
> diff --git a/.gitlab-ci.d/check-patch.py b/.gitlab-ci.d/check-patch.py
> index 68c549a146..be13e6f77d 100755
> --- a/.gitlab-ci.d/check-patch.py
> +++ b/.gitlab-ci.d/check-patch.py
> @@ -24,7 +24,7 @@
>  # base for the user's branch. We thus need to figure out a common
>  # ancestor between the user's branch and current git master.
>  subprocess.check_call(["git", "remote", "add", "check-patch", repourl])
> -subprocess.check_call(["git", "fetch", "check-patch", "master"])
> +subprocess.check_call(["git", "fetch", "--refetch", "check-patch", "master"])
>  
>  ancestor = subprocess.check_output(["git", "merge-base",
>                                      "check-patch/master", "HEAD"],
> -- 
> 2.47.1
diff mbox series

Patch

diff --git a/.gitlab-ci.d/check-dco.py b/.gitlab-ci.d/check-dco.py
index 70dec7d6ee..2fd56683dc 100755
--- a/.gitlab-ci.d/check-dco.py
+++ b/.gitlab-ci.d/check-dco.py
@@ -21,7 +21,7 @@ 
 
 print(f"adding upstream git repo @ {repourl}")
 subprocess.check_call(["git", "remote", "add", "check-dco", repourl])
-subprocess.check_call(["git", "fetch", "check-dco", "master"])
+subprocess.check_call(["git", "fetch", "--refetch", "check-dco", "master"])
 
 ancestor = subprocess.check_output(["git", "merge-base",
                                     "check-dco/master", "HEAD"],
diff --git a/.gitlab-ci.d/check-patch.py b/.gitlab-ci.d/check-patch.py
index 68c549a146..be13e6f77d 100755
--- a/.gitlab-ci.d/check-patch.py
+++ b/.gitlab-ci.d/check-patch.py
@@ -24,7 +24,7 @@ 
 # base for the user's branch. We thus need to figure out a common
 # ancestor between the user's branch and current git master.
 subprocess.check_call(["git", "remote", "add", "check-patch", repourl])
-subprocess.check_call(["git", "fetch", "check-patch", "master"])
+subprocess.check_call(["git", "fetch", "--refetch", "check-patch", "master"])
 
 ancestor = subprocess.check_output(["git", "merge-base",
                                     "check-patch/master", "HEAD"],