1

SVN サーバー 1.6.9 を開発リポジトリとして使用しています。しかし、今週から、いくつかのリビジョンのログが欠落していることがわかりました。

$ svn log http://svn.mywork.com/svn/my_system/branches/A01 -l 3
------------------------------------------------------------------------
r675 | yin.su | 2012-11-14 10:21:03 +0800 (Wed, 14 Nov 2012) | 1 line

instant msg model impl 
------------------------------------------------------------------------
r602 | svnsync | 2012-10-26 19:47:29 +0800 (Fri, 26 Oct 2012) | 1 line


------------------------------------------------------------------------

そのため、r602 のログ メッセージが欠落しています。さらに、「svn propget」を使用してログ メッセージを取得しようとしました。

$ svn propget svn:log --revprop -r 602 http://svn.mywork.com/svn/my_system/branches/A01

その後、何も返されません。

URL に PEG revison を追加すると、メッセージが返されます。

$ svn propget svn:log --revprop -r 602 http://svn.mywork.com/svn/my_system/branches/A01@HEAD
This is my SVN log message

しかし、「svn log」コマンドで url に PEG リビジョンを追加してもまだ機能しません。

r602 では、「svn merge」コマンドを使用して、ブランチ B01 から A01 へのマージを実際に行いました。では、なぜ PEG リビジョンを propget コマンドに追加すると機能するのか、なぜ「svn log」コマンドから r602 ログ メッセージが欠落するのか、私たちは混乱しています。

ありがとう!

4

3 に答える 3

1

ログ メッセージなしでコミットするかどうかを Subversion が確認しないようにするためだけに、ログ メッセージなし、またはいくつかのスペースで構成されるログ メッセージなしで Subversion リビジョンをコミットすることは完全に可能です。

$ svn commit -m" "

ログメッセージが表示されますか?

また、svn psetログ メッセージを完全に削除することもできます。ユーザーは を使用できsvn pset --revpropsますか?

出力を--xml形式で取得してみてください。このようにして、ログ メッセージが本当に欠落しているのか、それとも数個のスペースだけなのかを確認できます。

$ svn log --xml -v -r602 $REPO | less
于 2012-11-21T15:55:10.787 に答える
0

以下の FAQ のエントリは、svn ログに期待する動作ではないため、読む価値があります。 http://svn.apache.org/repos/asf/subversion/branches/server-l10n/www/faq.html#hidden-log

コミットしたばかりのファイルのログ エントリが表示されません。なんで?

リポジトリで 'svn checkout' を実行し、foo.c と呼ばれる 1 つのファイルを含むリビジョン 7 (別名、r7) の作業コピーを受け取ったとします。ファイルを変更し、正常にコミットします。次の 2 つのことが起こります。

The repository moves to r8 on the server.
In your working copy, only the file foo.c moves to r8. The rest of your working copy remains at r7.

これで、混合リビジョンの作業コピーと呼ばれるものが作成されました。1 つのファイルは r8 にありますが、他のすべてのファイルは、コミットされるまで、または「svn update」が実行されるまで、r7 のままです。

   $ svn -v status
   7        7 nesscg       .
   8        8 nesscg       foo.c
   $

引数なしで 'svn log' コマンドを実行すると、現在のディレクトリ (上記のリストでは '.' という名前) のログ情報が出力されます。ディレクトリ自体はまだ r7 にあるため、r8 のログ情報は表示されません。

最新のログを表示するには、次のいずれかを実行します。

Run 'svn log -rHEAD'.
Run 'svn log URL', where URL is the repository URL.
Ask for just that file's log information, by running 'svn log foo.c'.
Update your working copy so it's all at r8, then run 'svn log'.
于 2013-10-09T05:08:16.930 に答える
0

帰りが遅くなってすみません!問題は最終的に解決されました。根本的な原因は Apache 認証の設定ミスでした!

現象は、マージ ログ メッセージのみが欠落していたということです。そのため、Apache のアクセス ログを調べてみたところ、次のことがわかりました。

10.14.21.75 - - [22/Nov/2012:13:22:05 +0800] "OPTIONS /svn/opencore/branches/ali00304473_Other_20120426_opencore HTTP/1.1" 200 192
10.14.21.75 - - [22/Nov/2012:13:22:05 +0800] "PROPFIND /svn/opencore/branches/ali00304473_Other_20120426_opencore HTTP/1.1" 207 772
10.14.21.75 - - [22/Nov/2012:13:22:05 +0800] "PROPFIND /svn/opencore/!svn/vcc/default HTTP/1.1" 207 1040

リクエストでユーザー名が特定されませんでした! 次に、ブランチのSVNアクセス権が全員に読み取りを許可するように設定されていることがわかりました:

[opencore:/branches/ali00304473_Other_20120426_opencore]
* = r

さらに、 ではhttpd.conf、次のように構成されていました。

<Location /svn/>
        DAV svn
        SVNParentPath /home/admin/svnroot
        AuthBasicProvider file ldap
        AuthType Basic
        .....
        AuthUserFile /home/admin/svnfiles/svn-auth-file
        Satisfy Any
        Require valid-user
        AuthzSVNAccessFile /home/admin/svnfiles/svn-access-file
</Location>

したがって* = r" to "* =、SVN アクセス ファイルの " " を変更するか、"Satisfy Any" を "Satisfy All" に更新すると、問題が修正されます。

結論: 以前の構成 (不適切な構成) では、SVN HTTP 要求 (認証情報なし) がサーバーに到達すると、最初に Apache httpd によって処理されました。httpd は「Satisfy Any」に設定されているため、「Require valid-user」は必須オプションではないため、リクエストは MOD_SVN に転送されました。ブランチがすべてのブランチ (* = r) に対して開かれたため、MOD_SVN は認証要求を SVN クライアントに戻さなかったため、リポジトリからログを取得しようとしました。しかし、SVN ログの取得には認証/承認トークンが必要なため、MOD_SVN はモジュール内でサイレントに失敗し、httpd は空のログ メッセージをクライアントに返しました。

于 2013-01-11T06:35:38.893 に答える