diff mbox series

[v1,2/3] drm/ci: check-patch: unshallow repository before fetching

Message ID 20250328110239.993685-3-vignesh.raman@collabora.com (mailing list archive)
State New
Headers show
Series drm/ci: mesa uprev and python-artifacts/check-patch fixes | expand

Commit Message

Vignesh Raman March 28, 2025, 11:02 a.m. UTC
Ensure the repository is not shallow before fetching branches in
check-patch job. This prevents issues where git merge-base fails
due to incomplete history. Set the timeout of check-patch job to 1h.

Signed-off-by: Vignesh Raman <vignesh.raman@collabora.com>
---
 drivers/gpu/drm/ci/check-patch.py    | 16 ++++++++++++----
 drivers/gpu/drm/ci/static-checks.yml |  1 +
 2 files changed, 13 insertions(+), 4 deletions(-)

Comments

Daniel Stone March 28, 2025, 11:35 a.m. UTC | #1
Hi Vignesh,

On Fri, 28 Mar 2025 at 11:03, Vignesh Raman <vignesh.raman@collabora.com> wrote:
> Ensure the repository is not shallow before fetching branches in
> check-patch job. This prevents issues where git merge-base fails
> due to incomplete history. Set the timeout of check-patch job to 1h.

Ouch - an hour is pretty brutal. Is there a way to unshallow only back
to the merge base?

Cheers,
Daniel
Vignesh Raman March 28, 2025, 12:10 p.m. UTC | #2
Hi Daniel,

On 28/03/25 17:05, Daniel Stone wrote:
> Hi Vignesh,
> 
> On Fri, 28 Mar 2025 at 11:03, Vignesh Raman <vignesh.raman@collabora.com> wrote:
>> Ensure the repository is not shallow before fetching branches in
>> check-patch job. This prevents issues where git merge-base fails
>> due to incomplete history. Set the timeout of check-patch job to 1h.
> 
> Ouch - an hour is pretty brutal. Is there a way to unshallow only back
> to the merge base?

I set it to 1h, but the job is completed in ~15min for
https://gitlab.freedesktop.org/vigneshraman/linux/-/merge_requests/18 
which has 486 commits.

I will check if we can unshallow only up to the merge base.

Regards,
Vignesh

> 
> Cheers,
> Daniel
diff mbox series

Patch

diff --git a/drivers/gpu/drm/ci/check-patch.py b/drivers/gpu/drm/ci/check-patch.py
index a5f399a20e25..b206f12feb64 100755
--- a/drivers/gpu/drm/ci/check-patch.py
+++ b/drivers/gpu/drm/ci/check-patch.py
@@ -18,12 +18,20 @@  repourl = "https://gitlab.freedesktop.org/%s.git" % os.environ["CI_MERGE_REQUEST
 # GitLab CI environment does not give us any direct info about the
 # base for the user's branch. We thus need to figure out a common
 # ancestor between the user's branch and current git master.
-os.environ["GIT_DEPTH"] = "1000"
 subprocess.call(["git", "remote", "remove", "check-patch"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
 subprocess.check_call(["git", "remote", "add", "check-patch", repourl])
-subprocess.check_call(["git", "fetch", "check-patch", os.environ["CI_MERGE_REQUEST_TARGET_BRANCH_NAME"]],
-                      stdout=subprocess.DEVNULL,
-                      stderr=subprocess.DEVNULL)
+
+# Check if the repository is shallow
+shallow = subprocess.run(["git", "rev-parse", "--is-shallow-repository"],
+                         stdout=subprocess.PIPE, universal_newlines=True).stdout.strip()
+
+if shallow == "true":
+    print("Repository is shallow, unshallow git history")
+    subprocess.check_call(["git", "fetch", "--unshallow", "check-patch", os.environ["CI_MERGE_REQUEST_TARGET_BRANCH_NAME"]],
+                          stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+else:
+    subprocess.check_call(["git", "fetch", "check-patch", os.environ["CI_MERGE_REQUEST_TARGET_BRANCH_NAME"]],
+                          stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
 
 ancestor = subprocess.check_output(["git", "merge-base",
                                     "check-patch/%s" % os.environ["CI_MERGE_REQUEST_TARGET_BRANCH_NAME"], "HEAD"],
diff --git a/drivers/gpu/drm/ci/static-checks.yml b/drivers/gpu/drm/ci/static-checks.yml
index 13ffa827b7fa..734d6055fa65 100644
--- a/drivers/gpu/drm/ci/static-checks.yml
+++ b/drivers/gpu/drm/ci/static-checks.yml
@@ -1,4 +1,5 @@ 
 check-patch:
+  timeout: "1h"
   extends:
     - .build
     - .use-debian/x86_64_build