diff --git a/pkgs/clan-cli/clan_cli/git.py b/pkgs/clan-cli/clan_cli/git.py index cc9b5e57b..72db4c114 100644 --- a/pkgs/clan-cli/clan_cli/git.py +++ b/pkgs/clan-cli/clan_cli/git.py @@ -54,6 +54,16 @@ def _commit_file_to_git(repo_dir: Path, file_path: Path, commit_message: str) -> f"Failed to add {file_path} to git repository {repo_dir}:\n{shlex.join(cmd)}\n exited with {e.returncode}" ) from e + # check if there is a diff + cmd = nix_shell( + ["git"], + ["git", "-C", str(repo_dir), "diff", "--cached", "--exit-code"], + ) + result = subprocess.run(cmd, cwd=repo_dir) + # if there is no diff, return + if result.returncode == 0: + return + # commit only that file cmd = nix_shell( ["git"], diff --git a/pkgs/clan-cli/tests/test_git.py b/pkgs/clan-cli/tests/test_git.py index fc69c7ba5..6a9676fc1 100644 --- a/pkgs/clan-cli/tests/test_git.py +++ b/pkgs/clan-cli/tests/test_git.py @@ -32,6 +32,8 @@ def test_commit_file_outside_git_raises_error(git_repo: Path) -> None: # commit the file with pytest.raises(ClanError): git.commit_file(Path(tmp.name), git_repo, "test commit") + # this should not fail but skip the commit + git.commit_file(Path(tmp.name), git_repo, "test commit") def test_commit_file_not_existing_raises_error(git_repo: Path) -> None: