アップストリーム更新時に自動的にパッケージパッチ

アップストリーム更新時に自動的にパッケージパッチ

更新時にカスタムパッチをアップストリームパッケージに自動的にマージする方法はありますか?これまでに収集した内容によれば、ソースコードを変更するには、メンテナンスが必要なパッケージの別の分岐を維持する必要があります。

一部のパッケージマネージャや他のツールが更新されるたびに、小さな変更(他のキーバインディング、アイコンなど)に自動的にパッチを適用できたらと思います。

これはしてはいけないことですか?これの目的は、ユーザーがカスタム変更を「ホギング」し、アップストリームに貢献するのを防ぐことですか?

答え1

ObXkcd:https://xkcd.com/1319/

他のすべてと同様に、この操作も自動化できますが、いくつかの制限があります。特に、変更が最新のアップストリームに適用されなくなる可能性があります。

パッケージではなくアップストリームプロジェクトを追跡している場合は、ブランチを変更して定期的にブランチをリベースできます。たとえば、クローン操作は次のことができます。

cd /path/to/local/repo
git fetch upstream
git rebase upstream/main

指定されたリポジトリの現在のブランチをアップストリームリポジトリのマスターブランチにリベースします(リモート名が「upstream」と仮定)。成功すると、リポジトリが適用した変更で更新されます。それ以外の場合はメールが届きます。受信され、問題を手動で解決する必要があります。

必要に応じてリベースを自動的に停止できます。

git rebase upstream/main || git rebase --abort

これが成功したように見えても、結果がうまくいかない可能性があります。アップストリームの変更によってパッチ適用が許可されている間、ダウンストリームパッチが無効になることは完全に可能です。

パッケージを追跡するときに役立つツールがあるかもしれません。たとえば、Debian 派生物ではapt-src、ソースからパッケージをインストールするために使用できます。upgradeローカルの変更を維持しながら、ローカルにインストールされているソースパッケージをアップグレードする作業をサポートします。

関連情報