7

特定のファイルの Subversion ログまたは履歴にコメントを追加したいのですが、そのファイルに関連する変更はありません。

実際にファイルを変更せずに、svn ログにコメントを追加または挿入する方法はありますか。

コードレビューなど、何らかのイベントが発生した後にログ内のファイルにタグを付ける方法を探しています。

まったく新しいブランチを作成するために svn コピーを実行したくありません。ある時点で単一のファイルに関連付けられたコメントが必要です。

ここに何か提案はありますか?

4

2 に答える 2

6

Subversion には、次の 2 種類のプロパティがあります。

  • ファイル プロパティ: ファイルに関連付けられたプロパティです。ファイル自体の一部であるかのように改訂されます。
  • リビジョン プロパティ: これらは、個々のリビジョンに関連付けられたプロパティです。各タイプのプロパティは、リビジョンごとに 1 つだけ存在できます。これらはバージョン管理されていないため、リビジョン プロパティを変更すると、古い情報に関する履歴情報が失われます。安全上の予防措置として、revprop-change フックを事前に作成しない限り、リビジョン プロパティを変更することはできません。

それに加えて、各リビジョンに関連付けられた、かなり重要な 3 つの特別なリビジョン プロパティがあります。

  • svn:log: これはコミットメッセージです
  • svn:date: これは、コミットが行われた日時です。
  • svn:author: これは、コミットを行ったユーザーです。

それで、問題はあなたが何をしようとしているのかです。ファイルにコメントを追加する場合は、そのファイルにファイル プロパティを追加できます。ただし、これはファイルの変更と見なされるため、チェックアウトを実行してから、svn psetそのファイルに新しいリビジョンを作成するコミットを行う必要があります。

リポジトリ内の特定のリビジョンに新しいコメントを追加する場合、新しいリビジョンを作成する必要はありません。ただし、pre-revprop-commitこれらの変更を行うためのフック ファイルを作成する必要があります。これには 2 つの方法があります。

  • svn:logコメントで修正これがおそらく最も簡単な方法です。ただし、コミット メッセージの変更はログに記録されないため、その過程で元のコミット メッセージが失われます。svn:log利点は、このコメントがコマンドで自動的に表示されることです。

例えば:

$ old_comment=$(svn pget -r 100 -revprop svn:log http://myhost/svn/repos)
$ new_comment="$old_comment
> ================ COMMENT ON REVISION ================
> This was a change needed for a particular customer"
$ svn pset -r 100 --revprop svn:log "$new_comment"
  • コメントを含む新しいリビジョン プロパティを作成することもできます。たとえばcorp:comment(私はcorp自分の会社に関連する特別なプロパティを表すために使用します)。これらのコメントはsvn logメッセージに表示できますが、xml 形式でのみ表示できます。

例えば:

$ svn pset --revprop -r 100 foo:comment "This was a change needed for a particular customer" http://host/svn/repos

これで、ログを作成すると、次のコメントが表示されます。

$ svn log --with-revprop foo:comment --xml -r 100 http://host/svn/repos
<?xml version="1.0"?>
<log>
<logentry
   revision="100">
<revprops>
<property
   name="foo:comment">This was a change needed for a particular customer</property>
</revprops>
</logentry>
</log>
于 2012-04-10T18:41:48.000 に答える
4

コミットする必要があるファイルのユーザー定義プロパティを設定/変更できます。つまり、副作用を引き起こすことなく一部のメタデータのみを変更できます。

svn propset my:log reason filename
svn commit filename
于 2012-04-10T17:46:03.200 に答える