【问题标题】:Why does subversion chown/recreate files on checkin?为什么 subversion 在签入时会 chown/recreate 文件?
【发布时间】:2010-09-15 04:02:45
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: svn permissions


    【解决方案1】:

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

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

    工作流程是:

    1. 编辑 /home/youruser/yourwiki-working-copy/ 中的文件
    2. 做 svn 提交
      • 提交后挂钩更新 /var/www/(或 wiki 所在的任何位置)中的文件
    3. 转到 1。

    这样,您不必担心权限问题,甚至可以让多个人在网站上工作,同时享受版本控制的所有好处。

    【讨论】:

    • Isak,这可行,但这里的问题是我的工作副本是我的 /var/www!当我通过localhost/wiki 访问文件时,它也在查看/var/www 中的文件并对其进行编辑。
    • @Max:“别这样,如果疼的话!” SVN 不是为你试图强加给它的使用风格而设计的。
    • @David:我不认为这是颠覆“不是为……而设计的”……与我很好奇的权限之间存在一个小的差异(通过设置粘性权限位解决)关于。
    【解决方案2】:

    设置“粘性”权限位。

    find -type d -exec chgrp www-data {} + 
    find -type d -exec chmod g+s {} + 
    

    这将鼓励结帐的文件创建阶段继承目录权限,而不是切换到最后编辑它的人。

    编辑:dow +s == setgid。留给后代和其他读者的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-31
      • 2015-10-31
      • 2012-03-08
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      相关资源
      最近更新 更多