質問: launchpadレシピの{latest-tag}からプレフィックスを削除するにはどうすればよいですか? launchpadレシピ は次のようになっています。# git-build-recipe format 0.4 deb-version {latest-tag}-0~{time}~rev{revno}~pkg{revno:packaging} lp:kvantum master nest packaging lp:~krisives/kvantum/+git/kvantum-packaging debian master ただし、 pstream は、バージョン番号の前にvを付加するため、パッケージングプロセスは、バージョンが数字で始まる必要があると文句を言います。著者は、自分のvプレフィックス付きタグ名を保持したいと考えています。パッケージリポジトリのchangelogを手動で変更する以外に、ビルドプロセスを中断せずに、レシピで{latest-tag}を自動的に使用する方法はありますか?
回答: 回避策の1つは、パッケージバージョンのアップストリームバージョン部分doesが数字を挿入することで始まることを確認することです。たとえば、次を使用できます。# git-build-recipe format 0.4 deb-version 0{latest-tag}-0~{time}~rev{revno}~pkg{revno:packaging} ただし、たとえば0v1はv1の後にソートされるため、これは現在の展開で既に公開している可能性のあるものよりも低いことに注意してください。必要に応じて、エポック(たとえば1:0{latest-tag}-0~{time}~rev{revno}~pkg{revno:packaging})を使用して、以前に公開されたものよりも高いソートを保証できますが、このバンプは可逆的ではないため、可能な限り回避する必要があります。詳細については: debianポリシーのセクション5.6.1.2 で、パッケージのバージョン文字列がどのように機能するかの説明を見つけることができます。 git-build-recipe package のソースから開始することで、変数展開の正確な実装を見つけることができます。 変数の展開の詳細 を含む レシピの仕組みのドキュメント を参照してください。ただし、このドキュメントは実際にはbzrベースのレシピに関するものであり、gitの実装は単に「類似」としてドキュメント化されていることに注意してください( bug open this )。 dpkg --compare-versionsなどのdpkg --compare-versions 0v1 gt v1 && echo true || echo falseを使用して、パッケージバージョンの文字列比較をテストできます。詳細については、 dpkg(1) を参照してください。 最終バージョンの文字列に埋め込む以外に、「最新のアップストリームタグ」で何かを行うオプションはありません。また、タグがアップストリームを宣言する唯一の場所である場合、アップストリームバージョンを取得する他の方法はありません。したがって、現時点では私の回避策、またはそのようなものが唯一の選択肢であると思いますが、他の誰かが他の答えを持っているかどうかを確認できます。回避策が受け入れられない場合は、 git-build-recipeに対するバグレポートを歓迎します このような新しいユースケースをカバーする機能リクエストを含めます。ただし、一般的にどの拡張機能が適切であるかについての答えは何であるかについて話すことはできません。たとえば、拡張内で正規表現ベースの置換を提供するための拡張が可能かもしれませんが、おそらくgit-build-recipeを実行しているホストで悪意のあるコードを実行できないように実装する必要があります信頼できないレシピ入力。そのような機能拡張を実装する前に、まずバグで合意を見つけることが最善でしょう。