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

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

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


当前回答

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

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

其他回答

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

在Subversion 1.5中,可以检出目录中的(所有)文件,而无需检出任何子目录(各种——depth标志)。不是你想要的,而是一种“比所有都少”的形式。

请使用svn cat或svn export。

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

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

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

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

svn propedit svn:externals .

内容如下:

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

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

史蒂夫·杰索普的回答对我不起作用。我读了SVN的帮助文件,如果你只有一张图片,你可能不想再签入它,除非你在使用Photoshop,所以导出是一个比签出更好的命令,因为它是未版本的(但这是次要的)。

——depth ARG不应该是空的而是获取直接目录中的文件。因此,您将获得所有字段,而不仅仅是一个,但empty不会从存储库中返回任何内容。

 svn co --depth files <source> <local dest>

or

svn export --depth files <source> <local dest>

至于其他答案,cat让你阅读的内容只适合文本,而不是所有东西的图像。