Использование git pw клиента для patchwork

Kate

Administrator
Команда форума
При bleeding edge разработке или просто в рамках экспериментов, приходится добавлять патчи прямиком из maillists.

Скачивать серию вручную и сохранять в mbox можно действительно озвереть даже не смотря на то, что, например в mutt, можно спокойно выделить патчи по одному и сохранить всю пачку (ключевое слово здесь спокойно).

Тем у кого горит, предлагаю воспользоваться git-pw.

git pw отдельная утилита не входящая в состав официального git. Хороша она или плоха пусть каждый решает сам - я, например, пользуюсь.

Фактически это программа клиент для любого архива на базе http://jk.ozlabs.org/projects/patchwork/, короткий и неполный список проектов, которые базируются на этой утилите:

Список далеко не полный, я полагаю для любого крупного проекта под управлением git есть свой patchwork.

Для всего этого многообразия может быть применен git-pw.

Настройка​

https://github.com/getpatchwork/git-pw#getting-started

Минимально необходимых параметров три:

  • server
  • token
  • project
Все параметры могут быть переданы из командной строки или, что очень удобно, заданы в .git/config отдельно на каждый проект.

[pw]
server = http://patchwork.kernel.org/api/1.2/
token =
project = linux-riscv

Для того чтобы пользоваться необходимо зарегистрироваться на соответствующем patchwork и сгенерировать себе TOKEN.

Так же рекомендуется узнать соответствующую версию API так как git pw, внезапно, не умеет делать этого сам.

Для этого заходим на https://patchwork.kernel.org/about/ и сравниваем версию по таблице https://patchwork.readthedocs.io/en/stable-3.0/api/rest/#rest-api-versions.

Примеры команд​

Работы с сериями патчей​

Получаем симпатичный и на мой взгляд бесполезный списочек:

$ git pw series list --limit 3
+--------+--------------+-------------------------------------------------+-----------+------------------------------------------+
| ID | Date | Name | Version | Submitter |
|--------+--------------+-------------------------------------------------+-----------+------------------------------------------|
| 579699 | 20 hours ago | riscv/entry: fix misspelling of instruction | 1 | hasheddan (georgedanielmangum@gmail.com) |
| 579673 | a day ago | [RESEND] riscv, mm: Add Sv57 page table support | 1 | None (panqinglin2020@iscas.ac.cn) |
| 579671 | a day ago | Add Sv57 page table support | 1 | None (panqinglin2020@iscas.ac.cn) |
+--------+--------------+-------------------------------------------------+-----------+------------------------------------------+

Есть сортировка, фильтр по автору.

Есть возможность просмотра конкретной серии с помощью series show и загрузки в формате mailbox series download.

Но главное достоинство возможность применить всю серию с помощью команды series apply прямо по номеру скопированному из адресной строки сайта.

$ git pw apply series 578433
Applying: perf: Protect perf_guest_cbs with RCU
Applying: KVM: x86: Register perf callbacks after calling vendor's hardware_setup()
Applying: KVM: x86: Register Processor Trace interrupt hook iff PT enabled in guest
Applying: perf: Stop pretending that perf can handle multiple guest callbacks
Applying: perf: Drop dead and useless guest "support" from arm, csky, nds32 and riscv
Applying: perf/core: Rework guest callbacks to prepare for static_call support
Applying: perf: Add wrappers for invoking guest callbacks
Applying: perf: Force architectures to opt-in to guest callbacks
Applying: perf/core: Use static_call to optimize perf_guest_info_callbacks
Applying: KVM: x86: Drop current_vcpu for kvm_running_vcpu + kvm_arch_vcpu variable
Applying: KVM: x86: More precisely identify NMI from guest when handling PMI
Applying: KVM: Move x86's perf guest info callbacks to generic KVM
Applying: KVM: x86: Move Intel Processor Trace interrupt handler to vmx.c
Applying: KVM: arm64: Convert to the generic perf callbacks
Applying: KVM: arm64: Hide kvm_arm_pmu_available behind CONFIG_HW_PERF_EVENTS=y
Applying: KVM: arm64: Drop perf.c and fold its tiny bits of code into arm.c
Applying: perf: Drop guest callback (un)register stubs

Серия скачивается и применяется с помощью git am.

https://patchwork.readthedocs.io/projects/git-pw/en/latest/usage/#git-pw-series

Работа с пакетами (bundle)​

Есть возможность сформировать пакет и работать с ним, причем как на самом сайта так и с помощью утилиты.

Пакет по своей сути это просто отобранный нами набор патчей.

Можно так пролистать, посмотреть и применить сформированный пакет, сохранить в формате MBOX, или сделать публичным для раздачи ссылки на него.

https://patchwork.readthedocs.io/projects/git-pw/en/latest/usage/#git-pw-bundle

Работа с патчами​

Ну и вполне логично, что есть возможность работы с отдельными патчами.

Все приблизительно тоже самое, использовать по необходимости, в принципе даже одиночному патчу без сопроводительного письма назначается серия.

https://patchwork.readthedocs.io/projects/git-pw/en/latest/usage/#git-pw-series

Библиография и просто интересные ссылки по теме​

  1. https://stackoverflow.com/questions/5062389/how-to-use-git-am-to-apply-patches-from-email-messages
  2. https://unix.stackexchange.com/ques...-linux-kernel-patch-set-from-the-mailing-list
  3. https://unix.stackexchange.com/questions/225338/how-download-complete-patch-series-from-patchwork
  4. https://lore.kernel.org/workflows/87lfp38p7s.fsf@iris.silentflame.com/t/
  5. http://flavioleitner.blogspot.com/2011/03/patch-workflow-with-mutt-and-git.html

 
Сверху