From 05d35381a3aa7a47e4266b2b3a52cc3d9a962a60 Mon Sep 17 00:00:00 2001 From: Keshav Priyadarshi Date: Fri, 26 Sep 2025 23:21:49 +0530 Subject: [PATCH 1/3] Do not enumerate untracked files to compute commit message - Untracked file enumeration is a very costly operation for large git repo Signed-off-by: Keshav Priyadarshi --- scanpipe/pipes/federatedcode.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/scanpipe/pipes/federatedcode.py b/scanpipe/pipes/federatedcode.py index 20f80009df..467b50acba 100644 --- a/scanpipe/pipes/federatedcode.py +++ b/scanpipe/pipes/federatedcode.py @@ -218,18 +218,9 @@ def commit_changes( author_name = settings.FEDERATEDCODE_GIT_SERVICE_NAME author_email = settings.FEDERATEDCODE_GIT_SERVICE_EMAIL - files_added = all( - [ - True - for changed_file in files_to_commit - if changed_file in repo.untracked_files - ] - ) - change_type = "Add" if files_added else "Update" - purls = "\n".join(purls) commit_message = f"""\ - {change_type} {mine_type} results for: + Add {mine_type} results for: {purls} Tool: {tool_name}@v{tool_version} From 79fa1833bba8b7688c6405689cc14b6263ba39b8 Mon Sep 17 00:00:00 2001 From: Keshav Priyadarshi Date: Fri, 26 Sep 2025 23:32:01 +0530 Subject: [PATCH 2/3] Set allow_empty to false to avoid empty commits Signed-off-by: Keshav Priyadarshi --- scanpipe/pipes/federatedcode.py | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/scanpipe/pipes/federatedcode.py b/scanpipe/pipes/federatedcode.py index 467b50acba..2d92db1664 100644 --- a/scanpipe/pipes/federatedcode.py +++ b/scanpipe/pipes/federatedcode.py @@ -32,6 +32,7 @@ import requests import saneyaml +from git import GitCommandError from git import Repo from packageurl import PackageURL @@ -195,9 +196,20 @@ def commit_and_push_changes( remote_name="origin", logger=None, ): - """Commit and push changes to remote repository.""" - commit_changes(repo, files_to_commit, commit_message, purls) - push_changes(repo, remote_name) + """ + Commit and push changes to remote repository. + Returns True if changes are successfully pushed, False otherwise. + """ + try: + commit_changes(repo, files_to_commit, commit_message, purls, logger) + push_changes(repo, remote_name) + except GitCommandError as e: + if "nothing to commit" in e.stdout.lower(): + logger("Nothing to commit, working tree clean.") + else: + logger(f"Error while committing change: {e}") + return False + return True def commit_changes( @@ -230,7 +242,11 @@ def commit_changes( """ repo.index.add(files_to_commit) - repo.index.commit(textwrap.dedent(commit_message)) + repo.git.commit( + m=textwrap.dedent(commit_message), + allow_empty=False, + no_verify=True, + ) def delete_local_clone(repo): From 14e2c9f7d1cfac393f71ff8844641a9ffccb7830 Mon Sep 17 00:00:00 2001 From: Keshav Priyadarshi Date: Mon, 29 Sep 2025 15:34:04 +0530 Subject: [PATCH 3/3] Bump minecode_pipelines to 0.0.1b8 Signed-off-by: Keshav Priyadarshi --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 22b5d71474..5fe16f3f2f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -121,7 +121,7 @@ android_analysis = [ "android_inspector==0.0.1" ] mining = [ - "minecode_pipelines==0.0.1b1" + "minecode_pipelines==0.0.1b8" ] [project.urls]