fix: Improve git push error handling and feedback

- Replace subprocess_check_output with subprocess_run for better error handling
- Add specific error messages and formatting for push failures
- Implement exit code when push fails to properly indicate failure
This commit is contained in:
bobo.yang 2025-03-07 11:38:29 +08:00
parent e591361e69
commit 6b04c3de11
2 changed files with 36 additions and 8 deletions

View File

@ -389,12 +389,24 @@ def push_changes():
return False
print(f"Pushing changes to origin/{current_branch}...", end="\n\n", flush=True)
result = subprocess_check_output(["git", "push", "origin", current_branch])
result = subprocess_run(
["git", "push", "origin", current_branch],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
)
if result.returncode != 0:
print(f"Push failed: {result.stderr}", end="\n\n", flush=True)
return False
print("Push completed successfully.", end="\n\n", flush=True)
return True
except subprocess.CalledProcessError as e:
print(f"Push failed: {str(e)}", end="\n\n", file=sys.stderr, flush=True)
return False
except Exception as e:
print(f"An unexpected error occurred: {str(e)}", end="\n\n", file=sys.stderr, flush=True)
return False
def main():
global language
@ -461,7 +473,9 @@ def main():
else:
# 添加推送步骤
if ask_for_push():
push_changes()
if not push_changes():
print("Push failed.", flush=True)
sys.exit(-1)
print("Commit completed.", flush=True)
sys.exit(0)

View File

@ -385,15 +385,27 @@ def push_changes():
try:
current_branch = get_current_branch()
if not current_branch:
print("Could not determine current branch. Push failed.", file=sys.stderr, flush=True)
print("Could not determine current branch. Push failed.", end="\n\n", file=sys.stderr, flush=True)
return False
print(f"Pushing changes to origin/{current_branch}...", flush=True)
result = subprocess_check_output(["git", "push", "origin", current_branch])
print("Push completed successfully.", flush=True)
print(f"Pushing changes to origin/{current_branch}...", end="\n\n", flush=True)
result = subprocess_run(
["git", "push", "origin", current_branch],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
)
if result.returncode != 0:
print(f"Push failed: {result.stderr}", end="\n\n", flush=True)
return False
print("Push completed successfully.", end="\n\n", flush=True)
return True
except subprocess.CalledProcessError as e:
print(f"Push failed: {str(e)}", file=sys.stderr, flush=True)
print(f"Push failed: {str(e)}", end="\n\n", file=sys.stderr, flush=True)
return False
except Exception as e:
print(f"An unexpected error occurred: {str(e)}", end="\n\n", file=sys.stderr, flush=True)
return False
def main():
@ -461,7 +473,9 @@ def main():
else:
# 添加推送步骤
if ask_for_push():
push_changes()
if not push_changes():
print("Push failed.", flush=True)
sys.exit(-1)
print("Commit completed.", flush=True)
sys.exit(0)