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

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

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


当前回答

以下是已接受答案的TortoiseSVN等效解决方案(我在公司的内部文档中写了这个,因为我们新采用了SVN)。我觉得在这里分享也会有帮助:

签出一个文件: Subversion不支持检出单个文件,它只支持检出目录结构。(参考:http://subversion.tigris.org/faq.html single-file-checkout)。这是因为对于作为工作副本签出的每个目录,有关修改/文件修订的元数据存储为内部隐藏文件夹(.svn/_svn)。对于单个文件,目前(v1.6)不支持这一点。

Alternate recommended strategy: You will have to do the checkout directory part only once, following that you can directly go and checkout your single files. Do a sparse checkout of the parent folder and directory structure. A sparse checkout is basically checking out only the folder structure without populating the content files. So you checkout only the directory structures and need not checkout ALL the files as was the concern. Reference: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html

步骤1:继续到存储库浏览器

步骤2:右键单击存储库中的父文件夹,其中包含您希望处理的所有文件,并选择Checkout。

步骤3:在新的弹出窗口中,确保签出目录指向本地PC上的正确位置。也会有一个下拉菜单标记为“结帐深度”。根据需要选择“仅此项目”或“直接子项,包括文件夹”。第二个选项是推荐的,如果你想要处理嵌套文件夹,你可以直接进行下一次,否则你将不得不对嵌套文件夹再次遵循整个过程。

步骤4:父文件夹现在应该在您本地选择的文件夹中可用,并且现在由SVN监视(一个隐藏文件夹”)。现在应该出现“Svn”或“_svn”)。现在,在存储库中,右键单击您希望单独签出的单个文件,并选择“Update Item to revision”选项。现在可以处理单个文件并将其签回存储库。

我希望这能有所帮助。

其他回答

你可以这样做:

mkdir <your directory>/repos/test

svn cat http://svn.red-bean.com/repos/test/readme.txt > <your directory>/repos/test/readme.txt

基本上,这个想法是创建您想从SVN中获取文件的目录。 使用svn cat命令将输出重定向到同名文件。默认情况下,cat将在stdio上转储信息。

你可以分两步完成:

只使用元信息检出一个空的SVN存储库: $ CD /tmp $ SVN co——depth empty http://svn.your.company.ca/training/trunk/sql 执行svn up命令更新指定文件: $ svn up http://svn.your.company.ca/training/trunk/sql/showSID.sql

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

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

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

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