SVNコミットメッセージをさかのぼって変更しますか?


85

多数のSVNコミットメッセージを別の構造に書き直したいと思います。たとえば、カテゴリのプレフィックスを付けます。から:

"foo" now accepts "bar" format for connection string.

が欲しいです

core - database - "foo" now accepts "bar" format for connection string.

を使用してリポジトリ全体をダンプすることを含まない、これを行う簡単な方法はありますsvndumpfilterか?

クライアント側でTortoiseSVNを使用し、サーバー側でVisualSVNを使用しています。(VisualSVNはクラシックのラッパーsvnであり、コマンドラインからも通信できます。)

回答:


98

はい、コミットメッセージは変更できます。これらは、通常のファイルプロパティと同様に、リビジョンのプロパティとして実装されます。

TortoiseSVNログウィンドウで、コミットを右クリックして「ログメッセージの編集」を選択できます。


+1ありがとうございます。残りの部分に個別にコミットしたいいくつかのAPI変更を含むいくつかの作業を行い、それを反映するようにログメッセージを作成しました...誤って全体をコミットする前に。残りを説明するログメッセージで空白の変更をコミットすることで、それを「修正」しました。次回はどうしたらいいかわかります。
エドダニエル

1
これにも+1を付けましたが、「リポジトリはリビジョンpropchangesを受け入れることができません。管理者にpre-revprop-changeフックを作成するように依頼してください」というメッセージが表示されませんでした。管理者は、何をする必要があるかを自動的に認識しますか?
J.Merrill 2011年

19
有能なSubversion管理者がいるかどうか私に尋ねていますか?:)
JesperE 2011年

@ J.Merrillhooksリポジトリの場所にあるフォルダを参照し、名前をに変更しpre-revprop-change.tmplpre-revprop-change.bat機能させる必要があります。
sa_leinad

59

あなたは確かに遡及的にログメッセージを変更することができます、それはFAQでカバーされています。VisualSVNのコマンドラインインターフェイスがどのように機能するかはわかりませんが、vanillasvnの場合はコマンドは次のようになります。

svn propset -r N --revprop svn:log "new log message" URL

リポジトリをダンプして再ロードせずにすべてのリビジョンに対してこれを実行する場合は、このコマンドをスクリプト化して、すべてのリビジョンのリストを処理できます。リポジトリのサイズによっては、この方法で実行するのに時間がかかりますが、原則として実行できない理由はなく、ダンプとリロードは必要ありません。

また、vanilla SVNにはsvnlook、リポジトリファイルを直接操作する一種の管理ツールであるコマンドがあります。このツールはURLを理解しません(リポジトリへのファイルシステムレベルのアクセス権が必要です)が、はるかに高速です。構文は少し異なりますが、そのツールを使用して同じ方法でプロパティを変更できます。


3
@kazarkに感謝svn propedit -r N --revprop svn:logします。エディターでメッセージを変更できるようにするために、やらなければなりませんでした。
tutuDajuju 2013

3
注を追加するだけです。デフォルトでは、リビジョンプロパティへの変更は許可されていないため、このコマンドは機能しません。これを許可するには、svn管理者は「pre-revprop-change」というフックを作成する必要があります。この情報は、上記のFAQにあります。
マティアス

Windowsでは、コマンドを実行する前に、環境変数「SVN_EDITOR」、「VISUAL」、または「EDITOR」を設定する必要があります。例:set SVN_EDITOR=notepad.exe
2015

26

はい、できますが、最初にリポジトリで有効にする必要があります。

リポジトリのhooksディレクトリには、pre-revprop-change.tmplというファイルがあります。それが何をするかについてのコメントの数ページがあり、ログプロパティへの変更のみを許可するように設定されています。これを有効にするには、ファイルの名前をpre-revprop-changeに変更し、実行可能にします(POSIXでホストされているサブバージョンを想定しています。ホストにWindowsを使用している場合は、このメッセージが役立つ場合があります)。

リポジトリで許可されたら、Tortoiseを使用して、コミットの右クリックメニューからコミットのログメッセージを変更するか、コマンドラインを使用できます。


+1優れた情報サー。pre-revprop-changeフックなしではそれを実行できません。テンプレートのbashスクリプトをWindowsに移植する必要がありますが、それは問題ではないはずです。
ペッカ2010

コマンドスクリプトの例へのリンクを追加しました:svn.haxx.se/users/archive-2006-03/0107.shtml
Andrew Aylett


2

svn propedit -r N --revprop svn:log URL

URLすでに作業ディレクトリにいる場合、上記はオプションです。次に、メッセージを変更できるようにエディターが表示されます。


1

クライアントにTortoiseSVNを使用し、WindowsサーバーでVisualSVNを使用して、この投稿に正確な問題が発生しました。

あなたが持っているために起こる場合は、「DAV要求が失敗しました」エラーメッセージは、見与えるアンドリューAylettの答えをして、リポジトリのフックサブディレクトリに編集「プリリビジョン属性-change.tmpl」を行きます。

これが完了すると、コンテキストメニューの[ログメッセージの編集]を押すと、ようやく機能するはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.