“不可能只签出一个文件。你能做的最好的签出级别是在目录级别。”
在使用Subversion时,我如何解决这个问题?
我们在Subversion中有这个文件夹,用来保存所有的图像。我只是想从其中找出一个文件(图像)。这个文件夹真的很大,里面有很多我现在不需要的东西。
“不可能只签出一个文件。你能做的最好的签出级别是在目录级别。”
在使用Subversion时,我如何解决这个问题?
我们在Subversion中有这个文件夹,用来保存所有的图像。我只是想从其中找出一个文件(图像)。这个文件夹真的很大,里面有很多我现在不需要的东西。
当前回答
如果您真的需要更新,可以将该文件包含在另一个文件夹的签出中。
从SVN 1.6开始就可以使文件外部化,一种SVN链接。这意味着您可以拥有另一个包含单个文件的版本化文件夹。还可以在签出此文件夹时向文件提交更改。
这非常简单,签出您想要包含文件的文件夹,并简单地向文件夹添加一个属性
svn propedit svn:externals .
内容如下:
file.txt /repos/path/to/file.txt
提交后,该文件将出现在文件夹的未来签出中。基本上它可以工作,但有一些限制,如上面链接的文档所述。
其他回答
使用稀疏签出技术,你可以签出一个已经签出或存在的特定文件…用一个简单的技巧:
在使用“this item only”选项签出存储库的顶层后,在Windows资源管理器中,你必须首先右键单击你需要更新的文件;在上下文菜单中选择Repo浏览器;在存储库浏览器中再次找到该文件,并单击右键。您现在应该在上下文菜单中看到“更新到修订的项目”。
我不确定这是一个未记录的特性还是一个bug。我在下班后花了很长时间才终于找到了这个诀窍。我使用的是TortoiseSVN 1.6.2。
你可以这样做:
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命令的情况下完成此操作。
使用TortoiseSVN存储库浏览器,选择文件,右键单击,然后选择“复制URL到剪贴板”。将该URL粘贴到您的浏览器,登录后应该会提示您下载文件。
这样,您还可以选择所需的修订版本并下载文件的旧版本。
注意,如果您的SVN服务器有web界面,这是有效的。
如果你只是想要一个没有修订信息的文件使用
svn export <URL>
如果您真的需要更新,可以将该文件包含在另一个文件夹的签出中。
从SVN 1.6开始就可以使文件外部化,一种SVN链接。这意味着您可以拥有另一个包含单个文件的版本化文件夹。还可以在签出此文件夹时向文件提交更改。
这非常简单,签出您想要包含文件的文件夹,并简单地向文件夹添加一个属性
svn propedit svn:externals .
内容如下:
file.txt /repos/path/to/file.txt
提交后,该文件将出现在文件夹的未来签出中。基本上它可以工作,但有一些限制,如上面链接的文档所述。