modularml / stack-pr

A tool for working with stacked PRs on github.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Resilience if git command fails

mwichmann opened this issue · comments

I'm working on an experimental setup (following on from the thread in #12), and have made some fumble-finger mistakes on the local repo (typo when changing the git remote from https to git@). So the first generated git command line fails with an exception (as it should), and then the rollback/cleanup fails too. Here's part of the trace:

    return subprocess.run(list(map(str, cmd)), **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['git', 'push', '-f', 'origin', 'mwichmann/stack/1:mwichmann/stack/1', 'mwichmann/stack/2:mwichmann/stack/2', 'mwichmann/stack/3:mwichmann/stack/3']' returned non-zero exit status 128.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/mats/.pyenv/versions/venv-system312/bin/stack-pr", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/mats/.pyenv/versions/venv-system312/lib64/python3.12/site-packages/stack_pr/cli.py", line 1222, in main
    print_cmd_failure_details(exc)
  File "/home/mats/.pyenv/versions/venv-system312/lib64/python3.12/site-packages/stack_pr/cli.py", line 568, in print_cmd_failure_details
    cmd_stdout = exc.stdout.decode("utf-8").replace("\\n", "\n").replace("\\t", "\t")
                 ^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'decode'

Seems like a check for None there might be in order.

I've got the setup working now so probably won't see this again.

Ack, thanks for the report! I'll add an error check there, but if you'd like to contribute, we accept PRs too :)