如何从SVN导出单个文件(含外部引用文件场景)
导出SVN外部引用目录下单个文件的方法
嘿,这个问题我之前也碰到过,SVN的外部引用确实有点绕,不过解决起来其实很简单,分几步走就能搞定:
第一步:先搞清楚外部引用的真实SVN地址
外部引用本质就是个指向其他SVN仓库的链接,所以你得先拿到anotherfolder实际对应的远程路径:
- 如果已经本地checkout了trunk目录,直接在终端里运行这个命令:
输出会类似这样:svn propget svn:externals trunkanotherfolder http://external.host/path/to/external/repo,后面那串URL就是你要找的外部仓库地址。 - 要是没本地checkout也没关系,直接查远程仓库的属性就行:
svn propget svn:externals http://host.xyz/trunk
第二步:直接导出外部文件
拿到真实URL后,就跟导出普通SVN文件一样用svn export命令就行,比如要导出magic.py:
svn export http://external.host/path/to/external/repo/magic.py
要是想指定本地保存的文件名或者路径,就加个目标路径:
svn export http://external.host/path/to/external/repo/magic.py ./my_magic.py
额外小技巧:批量导出所有需要的.py文件
如果你想一次性把所有提到的4个文件都导出,可以把所有文件的URL整理成一个文本文件,比如叫export_list.txt,内容如下:
http://host.xyz/trunk/file.py http://host.xyz/trunk/anotherfile.py http://host.xyz/trunk/folder/stuff.py http://external.host/path/to/external/repo/magic.py
然后用bash循环批量导出:
while read url; do svn export "$url"; done < export_list.txt
这样就不用一个个敲命令啦~
内容的提问来源于stack exchange,提问作者Dnouna




