提交访问被拒绝时的SVN错误:"foobar" MKACTIVITY MYREPO: [英] SVN Error when committing Access denied: 'foobar' MKACTIVITY MYREPO:

查看:130
本文介绍了提交访问被拒绝时的SVN错误:"foobar" MKACTIVITY MYREPO:的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在使用具有ActiveDirectory身份验证的Apache和SVN.用户正在使用TortoiseSVN客户端.

I'm currently working with Apache and SVN with ActiveDirectory Authentication. The user is using TortoiseSVN client.

我应该指出,我有两个名称相同且映射关系不同的存储库,但是由于两个存储库的权限相同,因此重定向到了相同的用户url".

I should point out that I have 2 repos with same name and different mapping but redirected to the same "user url" since the permissions are the same for both repos.

例如'http://mysrvr/svn/foo/bar/corge'和'http://mysrvr/svn/foo/corge'

eg 'http://mysrvr/svn/foo/bar/corge' and 'http://mysrvr/svn/foo/corge'

或'http://mysrvr/svn/foo/bar/corge和'http://mysrvr/svn/foo/grault/corge'

or 'http://mysrvr/svn/foo/bar/corge and' 'http://mysrvr/svn/foo/grault/corge'

用8个回购对"复制这2个存储库,其余7个工作正常.

This 2 repos thing is replicated with 8 "repo pairs" and the remaining 7 are working just fine.

这是我的错误:

提交失败(详细信息如下):

Commit failed(details follow):

访问 '/svn/myDir/MYREPO/!svn/act/65bf494c-a66a-4f45-870e-d988f691a45d' 禁止

access to '/svn/myDir/MYREPO/!svn/act/65bf494c-a66a-4f45-870e-d988f691a45d' forbidden

完成!

这不是权限,因为用户 foobar 具有rw访问权限,并且他已经成功检出了存储库.提交时会发生此错误.

It's not permissions, since the user foobar has rw access and he has successfully checked out the repository. This error happens on commit.

有助于准确解决问题的事物:

Things that would help to orientate to a precise solve:

  • 其他回购货币对表现良好.权限是相同的.
  • 我的svn管理员用户可以与有问题的提交用户在同一台​​本地PC上进行操作.
  • 大写/小写网址不是问题,我已经检查了
  • NTLM和Active Directory都不是问题,因为他可以使用相同的权限文件访问另一个存储库.
  • 同一回购协议的其他用户正在尝试相同的问题.虽然我仍然可以在其本地PC上进行提交. (就像他们没有书面许可一样)

以下是Apache日志:

Here are the Apache logs:

Apache error.log

Apache error.log

[dd mm 12:38:02 2011] [错误] [客户端 10.x.x.x]访问被拒绝:"foobar" MKACTIVITY MYREPO:

[dd mm 12:38:02 2011] [error] [client 10.x.x.x] Access denied: 'foobar' MKACTIVITY MYREPO:

[dd dd 12:39:40 2011] [错误] [客户端 10.x.x.x]访问被拒绝:"foobar" MKACTIVITY MYREPO:

[dd mm 12:39:40 2011] [error] [client 10.x.x.x] Access denied: 'foobar' MKACTIVITY MYREPO:

[dd mm 12:39:54 2011] [错误] [客户端 10.x.x.x]访问被拒绝:"foobar" MKACTIVITY MYREPO:

[dd mm 12:39:54 2011] [error] [client 10.x.x.x] Access denied: 'foobar' MKACTIVITY MYREPO:

Apache access.log

Apache access.log

10.x.x.x-foobar [dd/mmm/yy:12:38:02 GMT]选项/svn/myDir/MYREPO HTTP/1.1"200 198

10.x.x.x - foobar [dd/mmm/yy:12:38:02 GMT] "OPTIONS /svn/myDir/MYREPO HTTP/1.1" 200 198

10.x.x.x-foobar [dd/mmm/yy:12:38:02 GMT]"PROPFIND/svn/myDir/MYREPO HTTP/1.1"207 667

10.x.x.x - foobar [dd/mmm/yy:12:38:02 GMT] "PROPFIND /svn/myDir/MYREPO HTTP/1.1" 207 667

10.x.x.x-foobar [dd/mmm/yy:12:38:02 GMT]"MKACTIVITY /svn/myDir/MYREPO/!svn/act/65bf494c-a66a-4f45-870e-d988f691a45d HTTP/1.1"403 266

10.x.x.x - foobar [dd/mmm/yy:12:38:02 GMT] "MKACTIVITY /svn/myDir/MYREPO/!svn/act/65bf494c-a66a-4f45-870e-d988f691a45d HTTP/1.1" 403 266

svn_activity.log

svn_activity.log

[dd/mmm/yy:12:34:20 -0300] waldo 提交r2

[dd/mmm/yy:12:34:20 -0300] waldo commit r2

[dd/mmm/yy:12:39:07 -0300] fred状态 /src/trunk r1447

[dd/mmm/yy:12:39:07 -0300] fred status /src/trunk r1447

从svn_activity.log中,我可以推断出Apache捕获并反弹了访问权限,因为在先前公开的时间范围内没有foobar访问权限.

From the svn_activity.log I can deduce Apache catches and bounces the access, given that there is no foobar access at time-frame exposed previously.

因此,希望我收集的数据对于解决此问题有用...任何想法吗?

So, hoping that the data i've collected is useful to solve this... any ideas?

推荐答案

我已经找到了!

好,这是答案:

我的用户在/svn/myDir/MYREPO目录中签出回购协议

My users check out a Repo in the directory /svn/myDir/MYREPO

Apache知道他必须将MYREPO转换为小写目录,因此当您签出或执行任何读取操作时,它就可以正常工作.

Apache knows that he has to translate MYREPO to a lowercase directory so when you check out or do any read operation this was working just fine.

但是,当用户确实尝试执行提交操作时,Apache会进行更改 以某种方式他必须执行的操作顺序才能满足用户的要求,因此首先接受写操作并尝试写,然后更改为小写.

But when the users did try to do the commit operation Apache changes somehow the order of the operations he has to do to fulfill the users request so, first accepts the write operation and tries to write, and then changes to lowercase.

再次,它尝试写入/svn/myDir/MYREPO ,问题是:

    设置为 myrepo 而不是 MYREPO 的回购许可
  • 实际回购是myrepo而非MYREPO
  • permissions to the repo where set to myrepo and not MYREPO
  • the actual repo is myrepo and not MYREPO

所以... MYREPO不存在! myrepo确实如此.这就是它引发该错误的原因:

So... MYREPO does not exist! myrepo does. That's why it throws that error:

  • 拒绝访问,因为没有为MYREPO编写权限.
  • 并且它确实以读取方式识别回购协议,因为apache可以理解您的要求并进行翻译.

但是对于首先使用它写的作品,然后花点时间了解他在做什么.而且例外发生在理解之前,因此Apache永远无法实现.

But for writing first works with it and after that takes a moment to understand what is he doing. And the exception comes previous to the understanding so Apache never get's there.

这是最简单的事情:

  • 转到已签出的存储库
  • 执行从
http://YourServer/svn/myDir/MYREPO

http://YourServer/svn/myDir/myrepo

的重定位

从现在开始,我对svn管理员和用户的建议是

My recommendation for svn-administrators and users from now on, is do

全部小写 ...抱歉,我纠正了自己:

EVERITHING LOWERCASE... sorry, I correct myself:

所有小写字母!

这篇关于提交访问被拒绝时的SVN错误:"foobar" MKACTIVITY MYREPO:的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆