| Message ID | 20251217022611.389379-1-sjg@u-boot.org |
|---|---|
| Headers |
Return-Path: <concept-bounces+u-boot-concept=u-boot.org@u-boot.org> X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1765938391; bh=0aUfoqbRAh5Yqor2OOGBlYIdrj8YVGL9GRLivY75glI=; h=From:To:Date:CC:Subject:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe:From; b=Igmt5Bx/kiU88mNFelktXqIbiN/y78SscjX2mM7bdlFEm5013ylevDK9t89pake4H byVKvqLOIzn/7sVleY/c3SUh0H+zqrjnNxfFeXPdzqBbjKUNCARE8UketaRacZOOSi CsTPDi6RmSwfPCIqv9ohtRew1hqjVkmRo1kA1CyhtkQ1DosAQ4HKF/zVucUyH9nEHS MY0lkue9CyFDKWYndiwY+4h6Wjt5ZWg9CKVy2WZOK4kMOTwhL0gnza9TxEofY2QHRK xzewhflTlp8wzdxpYIAOrdjji24f6xpgYSBNDH/kmu+e6HGMjWbvinzAZMb41nAc+v sJ325KUtKtASg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 1290568BA8 for <u-boot-concept@u-boot.org>; Tue, 16 Dec 2025 19:26:31 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id OKC1Jc0hetqC for <u-boot-concept@u-boot.org>; Tue, 16 Dec 2025 19:26:31 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1765938391; bh=0aUfoqbRAh5Yqor2OOGBlYIdrj8YVGL9GRLivY75glI=; h=From:To:Date:CC:Subject:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe:From; b=Igmt5Bx/kiU88mNFelktXqIbiN/y78SscjX2mM7bdlFEm5013ylevDK9t89pake4H byVKvqLOIzn/7sVleY/c3SUh0H+zqrjnNxfFeXPdzqBbjKUNCARE8UketaRacZOOSi CsTPDi6RmSwfPCIqv9ohtRew1hqjVkmRo1kA1CyhtkQ1DosAQ4HKF/zVucUyH9nEHS MY0lkue9CyFDKWYndiwY+4h6Wjt5ZWg9CKVy2WZOK4kMOTwhL0gnza9TxEofY2QHRK xzewhflTlp8wzdxpYIAOrdjji24f6xpgYSBNDH/kmu+e6HGMjWbvinzAZMb41nAc+v sJ325KUtKtASg== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 0065D68ACA for <u-boot-concept@u-boot.org>; Tue, 16 Dec 2025 19:26:31 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1765938388; bh=0kxj+z2RPuTczIKl7uwP233l2Ygi5i0RcSC6G9S5TjM=; h=From:To:Cc:Subject:Date:From; b=r7LePtqybFo523TZsCmSLhVfMai2qT2wF+8t1erAhkdNoUD/y9ElWSP2brpuG79Gk LveHSt48Of4HHYXNeZuiJcpA1N5XjJkvvKwKLoOVO516weO3pekbF7sjnWimxysWQP j78F1tENe2bvVc3Z6NrOlvIjiJYRdK08BqZvlHBZ++lmOH0chICunovKgEjukICNLY lOdTC8eM2GWrY69cOxcMumHP2dvurFqS/ExgNIS8/iGCnwF24nNUhx3MMGUwZlVb/8 kawCm8w4vrLPRnLzgeetnWmUDwC6mrghcMjeqK2p5hAs2vT2nVBlgpA4KhyNt4/Zi2 WB0vS8Uw2AEiA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 3411B6884F; Tue, 16 Dec 2025 19:26:28 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id YBYfBqced-h2; Tue, 16 Dec 2025 19:26:28 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1765938384; bh=cPjNM5bCDc7GIdBQ99xROjlvR1NIhk0eENTuHcdxXyI=; h=From:To:Cc:Subject:Date:From; b=ubSuWhgFFNgWR+HAv8TGAqs9ogZeqRb3BvJZuNg6H2Tk621H9CypsTe1wuX2gej+2 HaQaXNIeHFtpQQiU6HYiPKJYOy5laE0H9J6r+WtXAScsWrFsDqlolv8GuDjCpFfU6A NUyWM0ywVNqYOSRo6QP07Tp+XdIFxp4SKkSBY5/Q/16s2muuK5tABe3xINXxsYLr5p 9COb9+U2Di+wiYDVU5MlHbD3K9fvtYsXVk+mtG0ZB+a7ISlGtpHNEvHNJAC54/GYUd ER+5/nH7Rm8Q4f4aDn+J4SUvO6IThjHKFINGMGE/doocKiGh4A1MH2d5pnm4FHQxId qZRF+pFUNnAhw== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id B46FC6892F; Tue, 16 Dec 2025 19:26:23 -0700 (MST) From: Simon Glass <sjg@u-boot.org> To: U-Boot Concept <concept@u-boot.org> Date: Tue, 16 Dec 2025 19:25:48 -0700 Message-ID: <20251217022611.389379-1-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Message-ID-Hash: UP3PZYEDPLXYYOEUMI2W5G7B4MY5YXA2 X-Message-ID-Hash: UP3PZYEDPLXYYOEUMI2W5G7B4MY5YXA2 X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Heinrich Schuchardt <xypron.glpk@gmx.de>, Simon Glass <simon.glass@canonical.com> X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 00/17] pickman: Add a manager for cherry-picks List-Id: Discussion and patches related to U-Boot Concept <concept.u-boot.org> Archived-At: <https://lists.u-boot.org/archives/list/concept@u-boot.org/message/UP3PZYEDPLXYYOEUMI2W5G7B4MY5YXA2/> List-Archive: <https://lists.u-boot.org/archives/list/concept@u-boot.org/> List-Help: <mailto:concept-request@u-boot.org?subject=help> List-Owner: <mailto:concept-owner@u-boot.org> List-Post: <mailto:concept@u-boot.org> List-Subscribe: <mailto:concept-join@u-boot.org> List-Unsubscribe: <mailto:concept-leave@u-boot.org> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit |
| Series |
pickman: Add a manager for cherry-picks
|
|
Message
Simon Glass
Dec. 17, 2025, 2:25 a.m. UTC
From: Simon Glass <simon.glass@canonical.com>
This series adds pickman, a tool to help manage cherry-picking commits
between branches. It's designed to automate the tedious process of
cherry-picking large numbers of commits from one branch to another,
such as when maintaining a downstream branch.
Key features:
- Track source branches and cherry-pick progress in a SQLite database
- Find commits to cherry-pick up to the next merge commit
- Use Claude AI agent to automate cherry-picks with conflict resolution
- Create GitLab merge requests for review
- Handle MR review comments automatically
- Poll for continuous automated cherry-picking
The tool integrates with GitLab for MR management and uses the Claude
Agent SDK for automated cherry-picking and conflict resolution.
This tool is *very* experimental (so don't use it yourself!), but should
become usable sometime in the new year.
Simon Glass (17):
pickman: Add tool to compare branch differences
pickman: Add argument parsing with compare and test commands
pickman: Add database for tracking cherry-pick state
pickman: Add add-source command to track source branches
pickman: Add list-sources command
pickman: Add next-set command to show commits to cherry-pick
pickman: Add pcommit and mergereq tables to database
pickman: Add a Claude agent
pickman: Add an apply command to cherry-pick commits
pickman: Add GitLab API module
pickman: Add GitLab integration to push and create MRs
pickman: Add commit-source command
pickman: Add review command to handle MR comments
pickman: Add step command to create MR if none pending
pickman: Add workflow overview to documentation
pickman: Update database when MRs are merged
pickman: Process review comments in step command
.gitignore | 1 +
doc/develop/index.rst | 1 +
doc/develop/pickman.rst | 1 +
tools/pickman/README.rst | 236 +++++++
tools/pickman/__init__.py | 4 +
tools/pickman/__main__.py | 99 +++
tools/pickman/agent.py | 221 ++++++
tools/pickman/control.py | 732 ++++++++++++++++++++
tools/pickman/database.py | 413 +++++++++++
tools/pickman/ftest.py | 1309 +++++++++++++++++++++++++++++++++++
tools/pickman/gitlab_api.py | 345 +++++++++
tools/pickman/pickman | 1 +
12 files changed, 3363 insertions(+)
create mode 120000 doc/develop/pickman.rst
create mode 100644 tools/pickman/README.rst
create mode 100644 tools/pickman/__init__.py
create mode 100755 tools/pickman/__main__.py
create mode 100644 tools/pickman/agent.py
create mode 100644 tools/pickman/control.py
create mode 100644 tools/pickman/database.py
create mode 100644 tools/pickman/ftest.py
create mode 100644 tools/pickman/gitlab_api.py
create mode 120000 tools/pickman/pickman