“不可能只签出一个文件。你能做的最好的签出级别是在目录级别。”
在使用Subversion时,我如何解决这个问题?
我们在Subversion中有这个文件夹,用来保存所有的图像。我只是想从其中找出一个文件(图像)。这个文件夹真的很大,里面有很多我现在不需要的东西。
“不可能只签出一个文件。你能做的最好的签出级别是在目录级别。”
在使用Subversion时,我如何解决这个问题?
我们在Subversion中有这个文件夹,用来保存所有的图像。我只是想从其中找出一个文件(图像)。这个文件夹真的很大,里面有很多我现在不需要的东西。
当前回答
尝试svn export而不是svn checkout。这适用于单个文件。
限制的原因是签出创建了一个工作副本,其中包含关于存储库、修订、属性等的元信息。元数据存储在名为“.svn”的子目录中。单个文件没有子目录。
其他回答
史蒂夫·杰索普的回答对我不起作用。我读了SVN的帮助文件,如果你只有一张图片,你可能不想再签入它,除非你在使用Photoshop,所以导出是一个比签出更好的命令,因为它是未版本的(但这是次要的)。
——depth ARG不应该是空的而是获取直接目录中的文件。因此,您将获得所有字段,而不仅仅是一个,但empty不会从存储库中返回任何内容。
svn co --depth files <source> <local dest>
or
svn export --depth files <source> <local dest>
至于其他答案,cat让你阅读的内容只适合文本,而不是所有东西的图像。
如果您只是想导出文件,并且以后不需要更新它,您可以在不使用SVN命令的情况下完成此操作。
使用TortoiseSVN存储库浏览器,选择文件,右键单击,然后选择“复制URL到剪贴板”。将该URL粘贴到您的浏览器,登录后应该会提示您下载文件。
这样,您还可以选择所需的修订版本并下载文件的旧版本。
注意,如果您的SVN服务器有web界面,这是有效的。
简单的答案是导出文件,而不是签出它。
但这可能不是你想要的。您可能希望处理该文件并将其签入,而不必下载不需要的GB垃圾文件。
如果你使用的是Subversion 1.5+,那么执行稀疏签出:
svn checkout <url_of_big_dir> <target> --depth empty
cd <target>
svn up <file_you_want>
对于较旧版本的SVN,您可能会从以下方面受益:
使用很久以前的修订版签出目录,那时它没有那么多你不需要的垃圾。 更新您想要的文件,以创建混合修订。即使该文件在您签出的版本中不存在,这也可以工作。 利润!
另一种选择(例如,如果目录有太多来自创建它的修订的垃圾)是将您想要的文件的URL->URL复制到存储库中的新位置(实际上这是文件的一个工作分支)。检查该目录并进行修改。
我不确定是否可以在没有目标的工作副本的情况下将修改后的副本完全合并到存储库中—我从来没有必要这样做。如果是,那就这么做。
如果没有,那么不幸的是,你可能不得不找到其他人谁有整个目录检查,并让他们做。或者当你完成修改的时候,剩下的部分已经下载完成了……
在Subversion 1.5中,可以检出目录中的(所有)文件,而无需检出任何子目录(各种——depth标志)。不是你想要的,而是一种“比所有都少”的形式。
转到回收浏览器右键单击文件并使用“另存为”,我使用的是TortoiseSVN。