私の最終的な目標は次のとおりです。
問題管理ソフトウェア (私たちの場合は Atlassion Jira) でコード変更の完全なトレーサビリティを作成したいと考えています。すでにユーザーに Jira チケット番号の要求を強制しています (ただし、これはソフト要件です)。開発者が頻繁に行わなければならないことの 1 つは、コード内の小さな問題に遭遇したときに修正することです。適切なトレーサビリティを確保するには、jira にアクセスしてチケットを登録し、そのチケット番号を使用して変更をコミットする必要があります。しかし、これは本当に面倒で時間がかかります。
そのため、私たちの計画は、コード ベースに小さな修正をコミットしやすくすることですが、問題管理システムでこれらの変更に対する個別のチケットを用意することです。
したがって、これを行う最善の方法は、チケットを自動的に作成するコミット メッセージで定義されたマクロを単純に処理することです。例えば
#improvement NPE fix on whatchamacallit it. This will gracefully handle
empty values. But in places when thingamabob expects an exception, it will
no longer receive it.
これにより、プロジェクト「Quick Fixes」のjiraにチケットが自動的に記録されます。このチケット生成により、ID QF-1234 のチケットが作成されます。
これはすべて pre-commit フックから実行できます。ただし、「#improvement」マクロではなく、コミット メッセージにチケット番号 QF-1234 を含める必要があります。このようにして、SVN クライアントはチケット番号にリンクできます。
このメカニズムを同期およびブロック方式で機能させたいと思います。明白な副作用は、jira にアクセスできない場合、コミットが失敗することです。しかし、これは問題ありません。
チケットの自動作成は、pre-commit フック内から実行できます。しかし、コミットが完了する前にコミット メッセージを更新する方法がわかりません。
だから私の質問は次のとおりです.SVNトランザクション内で(変更されたSVNライブラリを作成せずに)コミットメッセージを更新する方法を知っている人はいますか? または、同じ結果を達成するための他の信頼できる方法があります。新しいトランザクションでコミット メッセージを更新できることはわかっていますが、これには多くの望ましくない副作用があります。
注意してください、何か問題が発生した場合にコミットに失敗する脆弱なソリューションに完全に満足しています。再コミットは安価であり、課題を手動で作成するのに 1 分もかかりません (しかし、私はその分を無駄にしたくありません)。