"无法检出单个文件.您可以在目录级别进行最精细的检查."
使用Subversion时如何解决此问题?
我们在Subversion中有这个文件夹,我们保存所有图像.我只想查看一个文件(图像).这个文件夹真的很大,还有很多我现在不需要的东西.
简单的答案是你svn export
的文件,而不是检查出来.
但那可能不是你想要的.您可能希望处理该文件并将其重新签入,而无需下载您不需要的GB垃圾.
如果你有Subversion 1.5+,那么做一个稀疏的结账:
svn checkout--depth empty cd svn up
对于旧版本的SVN,您可能会受益于以下内容:
在遥远的过去使用修订版本检查目录,当时它不再是你不需要的垃圾.
更新所需的文件,以创建混合版本.即使您检出的修订版中不存在该文件,这也可以正常工作.
利润!
另一种方法(例如,如果目录中的垃圾邮件与创建它的版本相差太多)就是将所需文件的URL-> URL副本放入存储库中的新位置(实际上这是一个工作分支)的文件).查看该目录并进行修改.
我不确定你是否可以将修改后的副本完全合并到存储库中而没有目标的工作副本 - 我从来没有需要.如果是,那就这样做.
如果没有,那么不幸的是,您可能必须找到其他人检查完整个目录并让他们这样做.或者,当您进行修改时,其余部分将完成下载...
尝试svn export
而不是svn checkout
.这适用于单个文件.
限制的原因是checkout
创建一个工作副本,其中包含有关存储库,修订版,属性等的元信息.元数据存储在名为".svn"的子目录中.单个文件没有子目录.
使用svn cat
或svn export
.
为此,您不需要获取工作目录,但您将无法提交您所做的任何更改.如果您需要进行更改并提交它们,则需要一个工作目录,但不必完全获取它.检查目录仍然/几乎为空的修订版,然后使用'svn cat'从HEAD中提取文件.
如果要查看存储库中的readme.txt而不检查它:
$ svn cat http://svn.red-bean.com/repos/test/readme.txt
这是一个README文件.你应该读这个.提示:如果您的工作副本已过期(或者您有本地修改),并且您希望在工作副本中看到文件的HEAD修订版,则当您为其指定路径时,svn cat将自动获取HEAD修订版:
$ cat foo.c
这个文件在我的本地工作副本中,并且有我做过的更改.$ svn cat foo.c
来自存储库的最新版本!
资源
接下来的答案的TortoiseSVN等效解决方案(我在新的采用SVN的情况下,我在我公司的内部文档中写了这个).我认为在这里分享也会有所帮助:
签出单个文件:Subversion不支持签出单个文件,它只支持检查目录结构.(参考:http://subversion.tigris.org/faq.html#single-file-checkout).这是因为将每个目录检出为工作副本,有关修改/文件修订的元数据将存储为内部隐藏文件夹(.svn/_svn).目前不支持单个文件(v1.6).
备选建议策略:您只需要执行一次结帐目录部分,然后您就可以直接查看单个文件.对父文件夹和目录结构进行稀疏检出.稀疏结账基本上只检出文件夹结构而不填充内容文件.所以你只检查目录结构,不需要检查所有文件,因为这是关注.参考:http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html
第1步:进入存储库浏览器
步骤2:右键单击存储库中包含您要处理的所有文件的父文件夹,然后选择Checkout.
步骤3:在新的弹出窗口中,确保结帐目录指向本地PC上的正确位置.还会有一个标有"结帐深度"的下拉菜单.根据您的要求选择"仅此项目"或"即时子项,包括文件夹".建议使用第二个选项,如果要处理嵌套文件夹,可以在下次直接进行,否则必须再次对嵌套文件夹执行整个过程.
步骤4:父文件夹现在应该在您本地选择的文件夹中可用,现在正在使用SVN进行监视(现在应该存在隐藏文件夹".svn"或"_svn").现在,在存储库中,右键单击您希望单独签出的单个文件,然后选择"将项目更新为修订版"选项.现在可以处理单个文件并将其检入存储库.
我希望这有帮助.
您可以分两步完成:
仅使用元信息签出一个空的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
如果将文件包含在另一个文件夹的结帐中,则可以覆盖您真正需要的更新.
从SVN 1.6开始,你可以创建文件外部,一种svn链接.这意味着您可以拥有包含单个文件的另一个版本化文件夹.也可以在结帐此文件夹时提交对文件的更改.
这很简单,签出要包含文件的文件夹,只需在文件夹中添加一个属性即可
svn propedit svn:externals .
内容如下:
file.txt /repos/path/to/file.txt
提交后,该文件将出现在该文件夹的未来签出中.基本上它可以工作,但是有一些限制,如上面链接的文档中所述.