Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
缺少某些修订的SVN日志消息_Svn_Logging - Fatal编程技术网

缺少某些修订的SVN日志消息

缺少某些修订的SVN日志消息,svn,logging,Svn,Logging,我们使用SVNServer1.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) |

我们使用SVNServer1.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
然后什么都不会回来

如果我们将PEG revison添加到url,则返回消息:

$ svn propget svn:log --revprop -r 602 http://svn.mywork.com/svn/my_system/branches/A01@HEAD
This is my SVN log message
但在“svnlog”命令中向url添加PEG修订仍然不起作用

在r602中,我们实际上使用“svn merge”命令从分支B01合并到A01。因此,我们不明白为什么将PEG修订添加到propget cmd中有效,为什么“svn log”cmd中缺少r602 log msg


谢谢

提交Subversion修订版时完全可以不使用日志消息或包含几个空格的日志消息,只是为了让Subversion不询问您是否要在不使用日志消息的情况下提交:

$ svn commit -m" "
您确定应该有日志消息吗

此外,还可以使用
svnpset
完全删除日志消息。您的用户是否能够使用
svnpset--revprops

尝试以
--xml
格式获取输出。通过这种方式,您可以查看日志消息是否确实丢失,或者是否只有几个空格

$ svn log --xml -v -r602 $REPO | less

提交Subversion修订版时完全可以不使用日志消息或包含几个空格的日志消息,只是为了让Subversion不询问您是否要在不使用日志消息的情况下提交:

$ svn commit -m" "
您确定应该有日志消息吗

此外,还可以使用
svnpset
完全删除日志消息。您的用户是否能够使用
svnpset--revprops

尝试以
--xml
格式获取输出。通过这种方式,您可以查看日志消息是否确实丢失,或者是否只有几个空格

$ svn log --xml -v -r602 $REPO | less

对不起,回来晚了! 这个问题终于解决了。根本原因是Apache身份验证配置错误

现象是只有合并日志msg丢失,因此我尝试查看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>

DAV svn
SVNParentPath/home/admin/svnroot
AuthBasicProvider文件ldap
AuthType Basic
.....
AuthUserFile/home/admin/svnfiles/svn auth文件
满足任何
需要有效用户
authzsvnacessfile/home/admin/svnfiles/svn访问文件
因此,将SVN访问文件中的“
*=r”更改为“*=
”,或者将“满足任何”更新为“满足所有”都可以解决问题

结论:
在我们之前的配置(错误配置)中,当一个SVN HTTP请求(没有身份验证信息)到达服务器时,它首先由Apache httpd处理。因为httpd被配置为“满足任何”,所以“需要有效用户”不是必需的选项,所以请求被转发到MOD_SVN。由于分支向每个人(*=r)打开,所以MOD_SVN没有将身份验证请求发回SVN客户机,然后它尝试从存储库中获取日志。但是获取SVN日志需要身份验证/授权令牌,因此MOD_SVN只是在模块内部悄然失败,而httpd只是将空日志消息返回给客户端。

很抱歉返回得太晚! 这个问题终于解决了。根本原因是Apache身份验证配置错误

现象是只有合并日志msg丢失,因此我尝试查看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>

DAV svn
SVNParentPath/home/admin/svnroot
AuthBasicProvider文件ldap
AuthType Basic
.....
AuthUserFile/home/admin/svnfiles/svn auth文件
满足任何
需要有效用户
authzsvnacessfile/home/admin/svnfiles/svn访问文件
因此,将SVN访问文件中的“
*=r”更改为“*=
”,或者将“满足任何”更新为“满足所有”都可以解决问题

结论:
在我们之前的配置(错误配置)中,当一个SVN HTTP请求(没有身份验证信息)到达服务器时,它首先由Apache httpd处理。因为httpd被配置为“满足任何”,所以“需要有效用户”不是必需的选项,所以请求被转发到MOD_SVN。由于分支向每个人(*=r)打开,所以MOD_SVN没有将身份验证请求发回SVN客户机,然后它尝试从存储库中获取日志。但是获取SVN日志需要身份验证/授权令牌,因此MOD_SVN只是在模块内部悄然失败,而httpd只是将空日志消息返回给客户端。

下面常见问题解答中的条目值得一读,因为这不是我从SVN日志中期望的行为。

我看不到我刚才提交的文件的日志条目。为什么?

假设您在存储库上运行“svn checkout”,并在版本7(aka,r7)上收到一个工作副本,其中有一个名为foo.c的文件。修改文件并成功提交。发生了两件事:

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.
您现在拥有了一个混合修订工作副本。一个文件位于r8,但所有其他文件保持在r7,直到它们也被提交,或者直到运行“svn更新”

   $ 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'.

下面FAQ中的条目值得一读,因为它不是我期望从svn日志中看到的行为。

<