Svn 从Subversion签出文件的只读副本?

Svn 从Subversion签出文件的只读副本?,svn,version-control,Svn,Version Control,有时,我想从存储库中获取一个文件,以便在不受源代码控制的项目中使用。让我们假设它只是一个充满了方便实用功能的文件。我知道我可以只导出svn,但我希望能够不时进行svn更新,以获取文件的最新版本 重要的是,我不想从新项目提交对文件的任何更改;我只想能够做更新刷新文件 有没有办法将文件签出为只读的?这看起来像是在模拟,我认为它没有 理想的情况是删除服务器端的提交访问权限,但我认为您的用户需要修改某个工作区中的文件,而不是在另一个环境(即不受源代码控制的项目)中修改(和复制)同一文件 另一种可能是将该

有时,我想从存储库中获取一个文件,以便在不受源代码控制的项目中使用。让我们假设它只是一个充满了方便实用功能的文件。我知道我可以只导出svn,但我希望能够不时进行svn更新,以获取文件的最新版本

重要的是,我不想从新项目提交对文件的任何更改;我只想能够做更新刷新文件


有没有办法将文件签出为只读的?

这看起来像是在模拟,我认为它没有

理想的情况是删除服务器端的提交访问权限,但我认为您的用户需要修改某个工作区中的文件,而不是在另一个环境(即不受源代码控制的项目)中修改(和复制)同一文件

另一种可能是将该文件合并到声明为只读的SVN分支中(通过a)。

这样,您可以在此分支中更新文件,但签出该文件的用户将无法提交该文件,同时保留在存储库中提交的可能性。

您可能有某种形式的编译自动化(make、ant等)。为什么不在make文件中添加一个“更新”步骤,如下所示:

update:
        svn update
        svn export <<export parameters go here>>
更新:
svn更新
svn导出

然后,每当有人键入
svn update
时,他们都可以键入
make update
,并具有相同的效果。

一种方法是,在签出文件时,在文件中(本地!)添加一个属性,如
readonly
或类似的属性。您甚至可以编写一个只读签出序列,它只需一步即可完成。这本身并不会使文件成为只读文件

您可以做的是,编写一个预提交钩子,在潜在事务中执行
svnlook propget
,如果定义了
readonly
,则不允许提交

当您执行常规的
svn更新时
应该可以正常工作,无需额外工作


这可能有些过分,但如果这是一个您希望经常使用的功能,它可能会很有帮助。

为什么不创建一个只有存储库读取权限的subversion用户,然后使用该用户执行签出/更新呢

如前所述,设置只读位。在Eclipse中,右键单击该文件并选中“只读”


将只读属性设置为签出文件的想法如何?我想知道是否有可能在某种签出后处理程序/钩子中自动执行此操作


但这不会阻止您提交更改。

主要问题是您希望确保您不能提交所做的任何更改,因此,您签出的文件需要能够读/写,但您不希望允许签入更改文件,有时您希望能够
svn up
这些文件

对我来说,解决办法是使
.svn
不可写

运行linux/mac,您可以运行
chmod-R-w.svn
。如果您尝试签入任何内容,将得到一个只读错误。您仍然可以进行区分、指责等。缺点是,这将阻止您在使目录再次可读之前
svn向上
-ing。但是,您可以在需要时打开/关闭写入(
chmod-R+w.svn


不幸的是,我不确定Windows的等价物是什么。

为什么不简单地进行另一次导出?是的,这是个好主意,谢谢。导出命令有点麻烦;您必须包括长存储库URL、用户名和密码。签出很好,因为您得到了一个.svn文件,它可以记住所有这些东西。不过,答案还是很好的。你没有说你在哪个平台上,但是使用Ortoise SVN导出几乎是一个单击操作。请注意,Berkeley数据库后端。请参阅表中的只读装载条目中的可用装载。