状況:私たちの会社は、git リポジトリのコードから Hudson を使用してビルドされたソフトウェア リリースを作成しています。試用期間が終了したため、以前のバージョンのビルドを再現する必要がある場合があります。そのソフトウェア バージョンに対応するコード バージョンを見つける必要があるため、これは問題を引き起こします。私たちの開発者は、タグやブランチを使用して作業することはありません。これは、作業スタイルに合わないためです。
この問題の解決策として、ビルドが成功するたびに自動タグ付けシステムを組み込むべきだと考えました。
私が念頭に置いていたワークフローは次のとおりです(ビルドマシンで実行されます):
- ローカルの変更が行われた場合は、すべて破棄します。
git checkout .
git clean -df
- 最新バージョンを入手:
git pull
- 目的のバージョンに移動する
git checkout .
か、git checkout <tag>
- ソフトウェアを構築する
- 成功した場合: 現在のバージョンにタグを付け、タグをリポジトリにプッシュします。
git tag -m "automated tag" versionXXX
git push --tags
この働き方について、3 つの質問があります。
- この作業方法に明らかな欠陥はありますか? (あいまいです、知っています - ごめんなさい)
- このユースケースでは、軽量タグよりも注釈付きタグを使用する利点はありますか? ほとんどの投稿は注釈付きタグを推奨していますが、特にこのユースケースでは、付加価値を実際には見ていません.
- 私たちのソフトウェアは複数のモジュールで構成されており、それぞれが独自の git リポジトリを持っています。これらのモジュールの一部はほとんど更新されません。同じコミットを指すタグがたくさんあることにマイナス面はありますか?