“不可能只签出一个文件。你能做的最好的签出级别是在目录级别。”

在使用Subversion时,我如何解决这个问题?

我们在Subversion中有这个文件夹,用来保存所有的图像。我只是想从其中找出一个文件(图像)。这个文件夹真的很大,里面有很多我现在不需要的东西。


当前回答

转到回收浏览器右键单击文件并使用“另存为”,我使用的是TortoiseSVN。

其他回答

请使用svn cat或svn export。

为此,您不需要获取工作目录,但您将无法提交所做的任何更改。如果您需要进行更改并提交它们,则需要一个工作目录,但不必完全获取它。检查目录仍然为/几乎为空的修订版,然后使用'svn cat'从HEAD中提取文件。

尝试svn export而不是svn checkout。这适用于单个文件。

限制的原因是签出创建了一个工作副本,其中包含关于存储库、修订、属性等的元信息。元数据存储在名为“.svn”的子目录中。单个文件没有子目录。

此问题由第823期“svn检出单个文件”覆盖,最初由Eric Gillespie[1]于2002年7月27日报道。

附带的Perl脚本[2]允许您从svn签出单个文件,进行更改,并将更改提交回存储库,但是不能运行“svn up”来签出目录的其余部分。它已经在svn-1.3、1.4和1.6上进行了测试。

注意,最初托管在tigris.org上的Subversion项目被转移到了apache.org。第823期的原始URL在tigris.org上,这个不存在的URL[3]。互联网档案时光倒流机有这个原始链接[4]的副本。

1 - https://issues.apache.org/jira/browse/SVN-823?issueNumber=823

2 - https://issues.apache.org/jira/secure/attachment/12762717/2_svn-co-one-file.txt

3 - http://subversion.tigris.org/issues/show_bug.cgi?id=823

4 - https://web.archive.org/web/20170401115732/http://subversion.tigris.org/issues/show_bug.cgi?id=823

如果您真的需要更新,可以将该文件包含在另一个文件夹的签出中。

从SVN 1.6开始就可以使文件外部化,一种SVN链接。这意味着您可以拥有另一个包含单个文件的版本化文件夹。还可以在签出此文件夹时向文件提交更改。

这非常简单,签出您想要包含文件的文件夹,并简单地向文件夹添加一个属性

svn propedit svn:externals .

内容如下:

file.txt /repos/path/to/file.txt

提交后,该文件将出现在文件夹的未来签出中。基本上它可以工作,但有一些限制,如上面链接的文档所述。

转到回收浏览器右键单击文件并使用“另存为”,我使用的是TortoiseSVN。