[Concept,00/24] pickman: Refine the feature set

Message ID 20251217022823.392557-1-sjg@u-boot.org
Headers
Series pickman: Refine the feature set |

Message

Simon Glass Dec. 17, 2025, 2:27 a.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

This series adds a few more features and tweaks to make pickman work
better in practice.

The main issue is that the branch logic is not correct, so it selects
the wrong branch once one has already been applied.

Other improvements in this series:
- stop polling if an error occurs
- allow using a config file for the gitlab credentials (so we can set up
  a 'pickman' user), along with a command to check gitlab access
- add the Claude log to the merge request, when it responds to comments
- maintain comments in a database so we know what was addressed
- add a command to figure out how many merges are pending and to show
  the next 10
- measure test coverage, improve it (not 100%) and add to CI


Simon Glass (24):
  pickman: Add terminal.capture() to tests for silent output
  pickman: Move imports to top of control.py
  pickman: Fix pylint warnings
  pickman: Complete database.py coverage
  pickman: Add test coverage support
  pickman: Add tests to improve control.py coverage
  pickman: Improve testing with write_history()
  pickman: Extract prepare_apply() from do_apply()
  pickman: Extract execute_apply() from do_apply()
  pickman: Use named tuples for MR data
  pickman: Fix ancestor check in process_merged_mrs
  pickman: Fix merge selection to follow first-parent chain
  pickman: Add next-merges command
  pickman: Fix parse_mr_description to ignore short numbers
  pickman: Add database tracking for comment processing
  pickman: Add a way to update a gitlab merge-request
  pickman: Improve review handling with comment tracking
  pickman: Add count-merges command
  pickman: Stop poll on errors
  pickman: Add config-file support for GitLab token
  pickman: Add check-gitlab command
  pickman: Skip push pipeline for MR branches
  gitlab-ci: Run lab tests automatically for MR pipelines
  gitlab-ci: Add pickman tests to CI

 .gitlab-ci.yml                  |    8 +-
 tools/pickman/README.rst        |   63 +-
 tools/pickman/__main__.py       |   83 +-
 tools/pickman/agent.py          |   19 +-
 tools/pickman/control.py        |  467 ++++++++---
 tools/pickman/database.py       |   63 +-
 tools/pickman/ftest.py          | 1320 ++++++++++++++++++++++++++++++-
 tools/pickman/gitlab_api.py     |  218 ++++-
 tools/pickman/requirements.txt  |    4 +
 tools/u_boot_pylib/test_util.py |    8 +-
 10 files changed, 2088 insertions(+), 165 deletions(-)
 create mode 100644 tools/pickman/requirements.txt