Svn 为什么subversion会在签入时重新创建文件?

Svn 为什么subversion会在签入时重新创建文件?,svn,permissions,Svn,Permissions,我有一个个人维基,我在上面做笔记。wiki的页面位于subversion工作副本目录“pages”中,我将其权限设置为664,由www-data:www-data拥有。我的用户名在“www数据”组中,因此我可以手动签入并处理页面 有一段时间,我遇到了一个问题,因为每次我运行签入时,文件都将归我所有:www-data而不是www-data:www-data,我将无法再通过我的web界面更改wiki文件!我通过翻转“pages”目录中的setgid位解决了这个问题,但我仍然不明白为什么会发生这种情况

我有一个个人维基,我在上面做笔记。wiki的页面位于subversion工作副本目录“pages”中,我将其权限设置为664,由www-data:www-data拥有。我的用户名在“www数据”组中,因此我可以手动签入并处理页面

有一段时间,我遇到了一个问题,因为每次我运行签入时,文件都将归我所有:www-data而不是www-data:www-data,我将无法再通过我的web界面更改wiki文件!我通过翻转“pages”目录中的setgid位解决了这个问题,但我仍然不明白为什么会发生这种情况:

每次我将某些东西签入subversion时,svn似乎都会删除它并重新创建它。为什么?这种行为是否支持一些我不知道的功能?有办法改变吗


谢谢

我认为你用错了。您可以做的是仍然将一切都保存在subversion中,并将您的本地工作副本与您开发的www目录分开

然后,只需通过一些脚本(可能作为钩子)为www用户自动更新www工作副本(如果您不希望www文件夹中的.svn目录,则可将其导出),然后相应地设置权限

工作流程将是:

  • 在/home/youruser/yourwiki工作副本中编辑文件/
  • svn是否提交
    • post-commit钩子更新/var/www/(或wiki所在的任何位置)中的文件
  • 转到1
  • 这样,您就不必担心权限问题,您甚至可以让多个人在网站上工作,并享受版本控制的所有好处。

    设置“粘性”权限位

    find -type d -exec chgrp www-data {} + 
    find -type d -exec chmod g+s {} + 
    
    这将鼓励签出的文件创建阶段继承目录权限,而不是切换到上次编辑它的人


    编辑:道琼斯指数==setgid。留给后人和其他读者的信息

    伊萨克,这会起作用,但这里的问题是我的工作副本是my/var/www!当我通过访问文件时,它也在/var/www中查看文件并对其进行编辑。@Max:“如果有伤害,请不要这样做!”SVN不是为您试图强迫它的使用风格而设计的。@David:我不认为这是subversion“没有设计”的东西。。。我很好奇权限之间有一个小小的差异(通过设置粘滞权限位来解决)。