查看Subversion文件的只读副本?

时间:2009-08-24 15:03:02

标签: svn version-control

有时候我想从存储库中获取一个文件,以便在一些不受源代码控制的项目中使用。让我们说它只是一个充满方便实用功能的文件。我知道我可以选择 svn export ,但我希望能够不时地执行 svn update 以获取该文件的最新版本。

重要的是我不希望能够从新项目中提交对文件的任何更改;我只是希望能够进行更新以刷新文件。

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

7 个答案:

答案 0 :(得分:2)

这看起来像是模仿CVS read-only checkout,我认为它不是implemented in Subversion

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

另一种可能性是将该文件合并到声明为只读的 SVN分支(通过per-directory access setting)。
这样,您可以更新此分支中的文件,但签出该文件的用户将无法提交该文件,同时保留在存储库上提交的可能性。

答案 1 :(得分:2)

执行此操作的一种方法是,当您签出文件时,向其添加属性(本地!),如readonly或其他类似内容。您甚至可以编写一个只读结帐序列,只需一步即可完成。这本身并不会使文件成为只读文件。

你可以做的是,编写一个预先提交的钩子,它在潜在的事务中执行svnlook propget,如果定义了readonly,则禁止提交。

当您定期svn update时,它应该可以正常工作而无需额外的工作。

这可能有点矫枉过正,但如果它是您经常使用的功能,它可能会有所帮助。

答案 2 :(得分:1)

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

update:
        svn update
        svn export <<export parameters go here>>

然后,只要有人输入svn update,他们就可以输入make update并产生相同的效果。

答案 3 :(得分:0)

为什么不创建一个只对存储库具有读访问权限的subversion用户,然后使用该用户执行结帐/更新。

答案 4 :(得分:0)

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

Read-Only

答案 5 :(得分:0)

您如何设想将只读属性设置为签出文件?如果可以在某种post-checkout处理程序/ hook中自动执行此操作,我会徘徊吗?

这不会阻止您提交更改。

答案 6 :(得分:0)

主要问题是您希望确保您不能提交所做的任何更改,因此您结帐的文件需要具有读/写功能,但您不希望允许更改要检入的文件,偶尔您希望能够svn up这些文件。

对我来说,解决方案是让.svn无法写入

运行linux / mac,您可以运行chmod -R -w .svn。如果您尝试检查任何内容,则会出现只读错误。你仍然可以分歧,责备等等。缺点是这会阻止你svn up - 直到再次使目录可读。但是,您可以在需要时切换开/关(chmod -R +w .svn)。

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