cherry-picker icon indicating copy to clipboard operation
cherry-picker copied to clipboard

Constant failures: "Command '['git', 'log', '--format=%H', '3.12..']' returned non-zero exit status 128"

Open sobolevn opened this issue 1 year ago โ€ข 3 comments

This is happening for me everytime I do manual backports:

(.venv) ~/Desktop/cpython2  main โœ”                                                        
ยป cherry_picker a1c4923d65a3e4cea917745e7f6bc2e377cde5c5 3.12
๐Ÿ ๐Ÿ’ โ›
Now backporting 'a1c4923d65a3e4cea917745e7f6bc2e377cde5c5' into '3.12'
Error cherry-pick a1c4923d65a3e4cea917745e7f6bc2e377cde5c5.
Auto-merging Lib/test/test_cmd_line.py
CONFLICT (content): Merge conflict in Lib/test/test_cmd_line.py
error: could not apply a1c4923d65a... gh-116858: Add `@cpython_only` to several tests in `test_cmd_line` (#116859)
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Recorded preimage for 'Lib/test/test_cmd_line.py'


Failed to cherry-pick a1c4923d65a3e4cea917745e7f6bc2e377cde5c5 into 3.12 โ˜น
... Stopping here.

To continue and resolve the conflict:
    $ cherry_picker --status  # to find out which files need attention
    # Fix the conflict
    $ cherry_picker --status  # should now say 'all conflict fixed'
    $ cherry_picker --continue

To abort the cherry-pick and cleanup:
    $ cherry_picker --abort

                                                                                           
(.venv) ~/Desktop/cpython2  backport-a1c4923-3.12 โœ—                                ยง 255 โš ๏ธ
ยป git add --all
                                                                                           
(.venv) ~/Desktop/cpython2  backport-a1c4923-3.12 โœ—                                     โœš 
ยป cherry_picker --continue --pr-remote=fork                  
๐Ÿ ๐Ÿ’ โ›
Traceback (most recent call last):
  File "/Users/sobolev/Desktop/cpython2/.venv/bin/cherry_picker", line 8, in <module>
    sys.exit(cherry_pick_cli())
             ^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Desktop/cpython2/.venv/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Desktop/cpython2/.venv/lib/python3.11/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Desktop/cpython2/.venv/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Desktop/cpython2/.venv/lib/python3.11/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Desktop/cpython2/.venv/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Desktop/cpython2/.venv/lib/python3.11/site-packages/cherry_picker/cherry_picker.py", line 802, in cherry_pick_cli
    cherry_picker.continue_cherry_pick()
  File "/Users/sobolev/Desktop/cpython2/.venv/lib/python3.11/site-packages/cherry_picker/cherry_picker.py", line 591, in continue_cherry_pick
    commits = get_commits_from_backport_branch(base)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/Desktop/cpython2/.venv/lib/python3.11/site-packages/cherry_picker/cherry_picker.py", line 902, in get_commits_from_backport_branch
    output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/.pyenv/versions/3.11.5/lib/python3.11/subprocess.py", line 466, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sobolev/.pyenv/versions/3.11.5/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['git', 'log', '--format=%H', '3.12..']' returned non-zero exit status 128.

fork is my own fork: https://github.com/sobolevn/cpython/ which I use to send PRs to the main repo.

Things I've tried:

  • Cleaning .git/config file
  • Reinstalling cherry-picker
  • Using different Python version

I mostly use 3.11.5 as my venv tooling.

Looking through existing issues - no matches :(

sobolevn avatar Mar 16 '24 09:03 sobolevn

It sounds similar to https://github.com/python/cherry-picker/issues/99#issuecomment-1913377889

Does git log --format=%H 3.12.. work?

It might be that the 3.12 branch doesn't exist in your local repo. You might have to run git switch 3.12 to create it first.

aloisklink avatar Jun 02 '24 07:06 aloisklink

Yeah, just happened with me (again). I think it's a bug: tool should automate this.

And beware #99 :D

skirpichev avatar Aug 03 '24 12:08 skirpichev

I just ran into the same issue, and tested @aloisklink's theory regarding the origin of the problem. Creating the local branch makes the failure go away.

So yes, it would be nice if cherry_picker did a git switch <target branch> before creating the backport branch.

ncoghlan avatar Oct 07 '24 14:10 ncoghlan