前言
无意间发现 GitHub 竟然支持 SVN 的方式拉取代码,于是有了使用 SVN 客户端 拉取 项目子目录 代码的想法,本文做个记录。
github svn support关于拉取子目录的意图
一个项目大了之后通常会划分多个 子模块,还会加入一些 sample 项目 和 测试用例 等等,有些甚至会包含多种语言的代码,总而言之就是有很多互不相关的东西。对于使用者来说,有时候可能只用到其中一部分而其他都是无关的,拉取全部代码不仅会对阅读造成干扰,还会有时间和空间上的浪费。
正文
用法参考 官方文档 ( 可切换为 简体中文 ) 。SVN 方式的仓库地址和 浏览器地址栏 中看到的项目 URL 是一致的。
先 checkout 一个完整的项目:
# svn co 是 svn checkout 的缩写
svn co https://github.com/anyesu/websocket
看下目录结构
websocket
├── branches
│ └── dev
├── tags
│ └── 0.0.1
└── trunk
├── LICENSE
├── README.md
├── pom.xml
├── websocket-chat
├── websocket-core
├── websocket-parent
└── websocket-samples
-
trunk 代表主分支
-
branches 下是其余的分支
-
tags 下是所有的标签
整个目录结构还是很清晰的,所以想拉取指定子目录的代码只要仓库路径跟上对应的子路径就好了。
比如要拉取 Tomcat-Websocket 这个子项目:
svn co https://github.com/anyesu/websocket/trunk/websocket-samples/Tomcat-Websocket
查看提交记录可以看到只剩下当前目录相关的修改了,很干净。
又比如要拉取 0.0.1
这个版本的代码:
svn co https://github.com/anyesu/websocket/tags/0.0.1 websocket-0.0.1
tag 和 branch 不一样,只有一条提交记录。
其他用法
功能当然不仅仅是上面说的 checkout,而是支持 SVN 的大部分用法 ( 好吧,我也不保证,自己试试吧 ) ,其中就包括通过 版本库浏览器 ,可以在线查看项目而不用拉代码到本地。
IDEA 中 版本库浏览器 使用方法:
菜单栏 VCS -> Browse VCS Repository -> Browse Subversion Repository -> Add
svn browser svn browser svn browser结语
上述方法 仅 适用于 GitHub ,目前还未发现其他 Git 托管平台 支持这种操作,可以参照 这里 的方法解决。我猜,GitHub 上应该是实现 SVN 到 Git 的协议转换或者简单粗暴的建立了一个 SVN 的镜像仓库。
网友评论