浏览代码

fix(dependencies): only open PR if there are changes

Carlo Sala 11 月之前
父节点
当前提交
0621944db5
共有 1 个文件被更改,包括 44 次插入34 次删除
  1. 44 34
      .github/workflows/dependencies/updater.py

+ 44 - 34
.github/workflows/dependencies/updater.py

@@ -228,21 +228,22 @@ class Dependency:
                     self.__apply_upstream_changes()
                     self.__apply_upstream_changes()
 
 
                     # Add all changes and commit
                     # Add all changes and commit
-                    Git.add_and_commit(self.name, short_sha)
+                    has_new_commit = Git.add_and_commit(self.name, short_sha)
 
 
-                    # Push changes to remote
-                    Git.push(branch)
+                    if has_new_commit:
+                        # Push changes to remote
+                        Git.push(branch)
 
 
-                    # Create GitHub PR
-                    GitHub.create_pr(
-                        branch,
-                        f"feat({self.name}): update to version {new_version}",
-                        f"""## Description
+                        # Create GitHub PR
+                        GitHub.create_pr(
+                            branch,
+                            f"feat({self.name}): update to version {new_version}",
+                            f"""## Description
 
 
-Update for **{self.desc}**: update to version [{new_version}]({status['head_url']}).
-Check out the [list of changes]({status['compare_url']}).
-""",
-                    )
+    Update for **{self.desc}**: update to version [{new_version}]({status['head_url']}).
+    Check out the [list of changes]({status['compare_url']}).
+    """,
+                        )
 
 
                     # Clean up repository
                     # Clean up repository
                     Git.clean_repo()
                     Git.clean_repo()
@@ -377,7 +378,21 @@ class Git:
         return branch_name
         return branch_name
 
 
     @staticmethod
     @staticmethod
-    def add_and_commit(scope: str, version: str):
+    def add_and_commit(scope: str, version: str) -> bool:
+        """
+        Returns `True` if there were changes and were indeed commited.
+        Returns `False` if the repo was clean and no changes were commited.
+        """
+        # check if repo is clean (clean => no error, no commit)
+        try:
+            CommandRunner.run_or_fail(
+                ["git", "diff", "--exit-code"], stage="CheckRepoClean"
+            )
+            return False
+        except CommandRunner.Exception:
+            # if it's other kind of error just throw!
+            pass
+
         user_name = os.environ.get("GIT_APP_NAME")
         user_name = os.environ.get("GIT_APP_NAME")
         user_email = os.environ.get("GIT_APP_EMAIL")
         user_email = os.environ.get("GIT_APP_EMAIL")
 
 
@@ -390,27 +405,22 @@ class Git:
         clean_env["GIT_CONFIG_GLOBAL"] = "/dev/null"
         clean_env["GIT_CONFIG_GLOBAL"] = "/dev/null"
         clean_env["GIT_CONFIG_NOSYSTEM"] = "1"
         clean_env["GIT_CONFIG_NOSYSTEM"] = "1"
 
 
-        # check if repo is clean (clean => no error, no commit)
-        try:
-            CommandRunner.run_or_fail(
-                ["git", "diff", "--exit-code"], stage="CheckRepoClean", env=clean_env
-            )
-        except CommandRunner.Exception:
-            # Commit with settings above
-            CommandRunner.run_or_fail(
-                [
-                    "git",
-                    "-c",
-                    f"user.name={user_name}",
-                    "-c",
-                    f"user.email={user_email}",
-                    "commit",
-                    "-m",
-                    f"feat({scope}): update to {version}",
-                ],
-                stage="CreateCommit",
-                env=clean_env,
-            )
+        # Commit with settings above
+        CommandRunner.run_or_fail(
+            [
+                "git",
+                "-c",
+                f"user.name={user_name}",
+                "-c",
+                f"user.email={user_email}",
+                "commit",
+                "-m",
+                f"feat({scope}): update to {version}",
+            ],
+            stage="CreateCommit",
+            env=clean_env,
+        )
+        return True
 
 
     @staticmethod
     @staticmethod
     def push(branch: str):
     def push(branch: str):