SVN管理员可以创建文件夹,但不能删除它们

时间:2009-07-10 14:19:59

标签: svn

这里真的很奇怪。我正在建立一个SVN服务器,我基本上试图执行以下规则:

  1. 默认情况下,所有用户都只读
  2. svnadmin可以写入根目录(创建新项目)和项目文件夹(创建trunk / branches / tags目录)
  3. 开发人员可以在//分支中创建目录,并可以对// trunk
  4. 进行更改
  5. 只有管理员/项目经理才能创建发布代码
  6. 以下是我的设置:

    svnserve.conf的

    [general]
    anon-access = none
    auth-access = write
    password-db = passwd
    authz-db = authz
    

    passwd的

    [users]
    svnadmin = svnadmin
    user1 = user1
    

    AuthZ的

    [groups]
    svnadmin = svnadmin
    developers = user1
    
    [/]
    * = r
    @svnadmin = rw
    
    [/test-project/branches]
    @developers = rw
    
    [/test-project/trunk]
    @developers = rw
    

    我以svnadmin身份登录并创建了/ test-project,/ test-project / trunk,/ test-project / branches和/ test-project / trunk - good。

    以root1身份登录并在尝试在root或/ test-project中创建任何内容时拒绝访问 - 很好。

    仍然作为user1,我在主干中创建了一个文件夹并添加了一个文件 - 好。

    现在,我以svnadmin身份登录并删除了文件... 但我无法删除该文件夹!更具体地说,它表示拒绝访问

    svnadmin在整个存储库上有rw,为什么我不能删除/ test-project / trunk / ??? (当然,user1可以删除该文件夹)。

    更糟糕的是,我注意到svnadmin无法删除/ test-project,/ test-project / branches,/ test-project / trunk或/ test-project / tags。我现在在我的存储库中有这个测试项目树,我无法摆脱它。

    我的设置有问题吗?我该怎么办?

2 个答案:

答案 0 :(得分:2)

我自己想出来并在这里发布答案,以免遇到遇到同样问题的人。

显然,与运行此SVN服务器的实际Linux操作系统不同,您不应该拥有与用户名称相同的组。

<强> auths中

[groups]
svnadmin = svnadmin
developers = user1

[/]
* = r
@svnadmin = rw

[/test-project/branches]
@developers = rw

[/test-project/trunk]
@developers = rw

实际应该是......

[groups]
svnadmins = svnadmin # note the pluralization of the group name
developers = user1

[/]
* = r
@svnadmins = rw # note the pluralization of the group name

[/test-project/branches]
@developers = rw

[/test-project/trunk]
@developers = rw

这解释了为什么 @developers 能够删除他们创建的所有目录,而 @svnadmin 不是;但是,它没有解释为什么 @svnadmin 能够首先创建目录......

...虽然我不会关心这一点,因为我的配置正在运行。

答案 1 :(得分:-1)

它不是要让它们变成pural,你必须在目录名后加一个'/',由于某种原因它不是递归的,如果最后没有'/'。这样您就不需要在顶部放置删除权限。