2011-08-05 125 views
1

我对SVN很新颖,它一直让我疯狂!这里的基本问题:你如何让SVN忽略写保护目录?

我已经在一个允许用户上传源代码的网站上工作。在一个名为“提交”的子目录中,所有上传都被存储。 虽然网络服务器对提交的写入权限有限制,但我没有。我在我的php和文本文件上使用SVN进行版本控制,但它一直处于锁定状态。如果可能的话,我希望SVN保留上传提交的档案,我不介意由于文件许可而无法恢复它们。

问题是SVN保持锁定,它告诉我清理,清理告诉我“提交”不是工作副本目录,我不允许提交更改,删除文件或执行其他任何正常工作流程。有什么建议么?

[[email protected] ~]$ svn commit -m "added report" 
svn: Working copy '/var/www/sites/testPortal' locked 
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) 
[[email protected] ~]$ svn cleanup 
svn: 'submissions' is not a working copy directory 
[[email protected] ~]$ svn remove submissions 
svn: Working copy '.' locked 
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) 
[[email protected] ~]$ ls -la submissions 
total 32 
drwxrwxrwx 7 nginx nginx 4096 Aug 4 03:22 . 
drwxrwxrwx 10 root root 4096 Aug 5 01:36 .. 
drwxr-xr-x 2 nginx nginx 4096 Aug 4 00:04 114 
drwxr-xr-x 2 nginx nginx 4096 Aug 4 02:10 116 
drwxr-xr-x 2 nginx nginx 4096 Aug 4 02:40 117 
drwxr-xr-x 2 nginx nginx 4096 Aug 4 02:15 118 
drwxr-xr-x 2 nginx nginx 4096 Aug 4 03:22 119 
-rw-r--r-- 1 nginx nginx 1 Aug 4 01:51 uploads.txt 

回答

2

也许最简单的是所有这些文件执行chgrp一组你在,然后更改权限给自己写访问(G + W)。使用权限2775作为目录,它将添加组sticky位,因此在该目录中创建的所有文件都将拥有目录组 - 即使创建者(本例中为nginx)不在该组中。

+0

我无权更改其群组或权限 –

+0

+1您以简单的方式解释了这一点。 很多人一开始就很难理解这个概念,你的解释很好。 – stefgosselin

+0

@ mark-wilbur实际上你可能会做,除非你必须通过网络服务器来完成。运行一些PHP代码,或者你使用的任何东西,然后在那里做改变。您可能只需要拥有.svn目录。如果是这样,首先让webserver将根目录更改为777,然后创建一个由您拥有的.svn,然后更改根目录。一旦.svn是可写的,颠覆应该是可以的。然而,你将需要在每个目录中有一个.svn,而不仅仅是根目录。 – Ariel

1

如果问题是您希望某些文件超出版本控制范围,您可以在保存所需目录的目录中设置svn:ignore属性。

你也可以查看这个见地SO question,有很多的似乎有点关系到你的问题好点

+0

这是一件很好的事情要知道。如果正确理解,svn将不再存档提交。有没有办法告诉svn在目录上是只读的? –

+0

好吧,取决于服务器的设置,也许是这样。根据svn * serverside *配置,svn使用基于用户的方法,因此,如果您正在使用的是用户,那么可以创建用户并提供只读访问权限。阅读免费的svn图书,它是一个简单的阅读,完全值得,如果你使用svn。 – stefgosselin