9

新しいリリースの問題のバージョン番号の急上昇にどのように対処するかを知りたいと思います。

マニュアルページなどの関連ファイルのバージョン番号をどのように処理しますか。

ソフトウェアはgnuツールチェーンで構築されているため、autoconf、automakeなどが利用可能であり、アプリケーションのバージョン番号に使用されます。情報を再利用できるようにします。

gitはvcsとして使用されます。

1つの可能性は、関連するすべてのファイルのバージョン番号と日付を置き換えるためにsed/awkを実行するMakefile.amに追加の新しいターゲットを導入することです。そのターゲットは、新しいリリースの開発の開始時(分岐直後)に一度呼び出すことができます。

次に、人々がプロジェクトのgitクローンを作成するとき、またはリリースtarballが実行されるときに、プロジェクトは正しい情報でビルドできます。もちろん、新しいリリースの開発を開始するときは、このmakeターゲットを実行することを忘れないでください。

もう1つのオプションは、sed / awkをdistターゲットのフックで置き換えることですが、これにより、プロジェクトのgitリポジトリが、関連付けられたファイルに正しいバージョン番号が関連付けられていない状態になります。

git履歴内に正しいバージョン番号も記録されるため、最初のソリューションを実行することをお勧めします。

sed / awkの置換を行うときは、「ファイル内」で行うか、autoconf/automakeツールのようにファイル内のテンプレートを使用するかを選択します。どちらの方法にも長所と短所があります。

関連ファイルのバージョン管理をどのように処理しますか。開発フェーズの開始時に変更しますか、出荷直前に変更しますか、ファイル内置換を行いますか、それともテンプレートを使用しますか?

THX。

4

3 に答える 3

10

最近の一般的な解決策は、m4_esyscmd 引数を指定して AC_INIT を呼び出し、git から VERSION を生成することです。たとえば、autoconf の configure.ac には次の行が含まれています。

AC_INIT([GNU Autoconf],
        m4_esyscmd([build-aux/git-version-gen .tarball-version]),
        [bug-autoconf@gnu.org])

build-aux/git-version-gen は、「git describe」を呼び出してバージョン番号を生成する単純なスクリプトです。(gnulib を参照)

このアプローチには欠点がありますが、効果的です。

于 2009-07-18T20:50:03.540 に答える
6

これを行う標準的な方法は、Git のフック システムと m4 または sed/awk を使用して、提案されているように検索/置換を行うことだと思います。各ファイル(おそらくヘッダー)のコメントに特別なトークンが必要です。

ここにgithookのリファレンスと、同じ問題を解決する人々によって書かれたいくつかのページがあります。

これらはどちらも、ソース ツリーのどこかにあるファイルにバージョン番号を格納することに依存しています。

また、リリースの作成 (およびバージョン番号の設定) を自動化すると主張する0releaseと呼ばれるテイクにも遭遇しました。

最後に、リリース番号に関して、これは他のいくつかの質問で対処されます。

于 2009-06-12T13:08:04.490 に答える
1

リリース候補に「タグ」として適用される従来の major.minor.patch システムを使用します。git の「タグ オブジェクト」を使用するのではなく、バージョン番号としてコミットにタグを付けるスクリプトがあります。すべてのバージョン番号付けは「手作業」で行われます。バージョン番号は、開発プロセスのずっと後の段階にある「ステージングへのリリース」スクリプトによって作成されるため、これはかなりうまく機能します。コミットが開発環境を離れない場合、内部 SHA コード以外の id は必要ありません。

すべての「パッチ」リリースは、同じメジャー、マイナー タグを持つ他のバージョンとバイナリ互換性がある必要があります。

そうすれば、タグが付いたものは少なくともビルドされるはずですが、仕様どおりに動作しない可能性またはかなりの可能性があります。

改善策としては、QA 部門が「QA 承認済み」のものに署名付きタグ オブジェクトを作成するように依頼することですが、今のところ、そのためには他の書類に頼っています。

于 2009-06-12T13:11:36.727 に答える