1

私は唯一の開発者であり、Cで記述された組み込みソフトウェアのバージョン管理にGITを使用しています。ソフトウェアはそのバージョンを認識する必要があり、現在、単一の#defineを含むヘッダーファイルを含めることによって実行されています。

#define SOFTWARE_VERSION "1.021"

このヘッダーファイルは、GITリポジトリから最新のタグを取得しようとするビルド済みのPythonスクリプトによって自動的に作成されます(リリースされたすべてのバージョンに現在のバージョン文字列のタグを付けます)。これは、最後のバージョンの文字列を取得するために使用するコマンドです。

git describe --tag HEAD

チェーン全体は期待どおりに機能しますが、堅牢ではないようです(リポジトリがより複雑/分岐するにつれて、チェーンが壊れると思います)。また、これを行うためのより簡単な方法がなければならないので、私は重要な何かを見逃しているかもしれないと思います。

ワークフローや実装の詳細を改善できる人はいますか?(興味があれば、gitdescribeの出力を解析するPythonスクリプトを投稿できます)

4

2 に答える 2

2

ソフトウェア リリースのバージョン番号を CM システムのバージョン番号から分離します。

はい、特定のリリース番号に対応する CM システムのバージョンまたはタグを知る必要がありますが、CM システムのバージョン番号を使用してリリース番号を定義しないでください。

RCS や SCCS のような単純な VCS と単純な (1 つのファイル) プログラムでは、VCS を使用してプログラム バージョンを提供できます。しかし、私の複雑なプログラムはすべて、VCS のバージョン番号とは完全に切り離された、完全に別のバージョン番号付け方式を使用しています。

于 2009-03-31T13:59:59.993 に答える
1

このSO questionで言及されてgit describeいるように、両方の中間「バージョン」を参照する必要がある可能性があります。

  • 最新のアプリケーション バージョン (つまり「タグ」) に基づく
  • 内部コミット (つまり sha1) に基づく
于 2009-03-31T14:10:09.673 に答える