|
@@ -228,21 +228,22 @@ class Dependency:
|
|
|
self.__apply_upstream_changes()
|
|
|
|
|
|
# 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
|
|
|
Git.clean_repo()
|
|
@@ -377,7 +378,21 @@ class Git:
|
|
|
return branch_name
|
|
|
|
|
|
@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_email = os.environ.get("GIT_APP_EMAIL")
|
|
|
|
|
@@ -390,27 +405,22 @@ class Git:
|
|
|
clean_env["GIT_CONFIG_GLOBAL"] = "/dev/null"
|
|
|
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
|
|
|
def push(branch: str):
|