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

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

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


当前回答

如果你只是想要一个没有修订信息的文件使用

svn export <URL>

其他回答

If you want to view readme.txt in your repository without checking it out: $ svn cat http://svn.red-bean.com/repos/test/readme.txt This is a README file. You should read this. Tip: If your working copy is out of date (or you have local modifications) and you want to see the HEAD revision of a file in your working copy, svn cat will automatically fetch the HEAD revision when you give it a path: $ cat foo.c This file is in my local working copy and has changes that I've made. $ svn cat foo.c Latest revision fresh from the repository!

如果你只是想要一个没有修订信息的文件使用

svn export <URL>

以下是已接受答案的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上转储信息。

此问题由第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