有时候我想从存储库中获取一个文件,以便在一些不受源代码控制的项目中使用。让我们说它只是一个充满方便实用功能的文件。我知道我可以选择 svn export ,但我希望能够不时地执行 svn update 以获取该文件的最新版本。
重要的是我不希望能够从新项目中提交对文件的任何更改;我只是希望能够进行更新以刷新文件。
有没有办法将文件签出为只读?
答案 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中,右键单击该文件并选中“只读”。
答案 5 :(得分:0)
您如何设想将只读属性设置为签出文件?如果可以在某种post-checkout处理程序/ hook中自动执行此操作,我会徘徊吗?
这不会阻止您提交更改。
答案 6 :(得分:0)
主要问题是您希望确保您不能提交所做的任何更改,因此您结帐的文件需要具有读/写功能,但您不希望允许更改要检入的文件,偶尔您希望能够svn up
这些文件。
对我来说,解决方案是让.svn
无法写入
运行linux / mac,您可以运行chmod -R -w .svn
。如果您尝试检查任何内容,则会出现只读错误。你仍然可以分歧,责备等等。缺点是这会阻止你svn up
- 直到再次使目录可读。但是,您可以在需要时切换开/关(chmod -R +w .svn
)。
不幸的是,我不确定Windows的等价物是什么。