Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GitHub 拉取指定子目录 #30

Open
anyesu opened this issue Sep 26, 2019 · 0 comments
Open

GitHub 拉取指定子目录 #30

anyesu opened this issue Sep 26, 2019 · 0 comments

Comments

@anyesu
Copy link
Owner

anyesu commented Sep 26, 2019

前言


无意间发现 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

tagbranch 不一样,只有一条提交记录。

其他用法


功能当然不仅仅是上面说的 checkout,而是支持 SVN 的大部分用法 ( 好吧,我也不保证,自己试试吧 ) ,其中就包括通过 版本库浏览器 ,可以在线查看项目而不用拉代码到本地。

IDEA版本库浏览器 使用方法:

菜单栏 VCS -> Browse VCS Repository -> Browse Subversion Repository -> Add

svn browser

svn browser

svn browser

结语


上述方法 适用于 GitHub ,目前还未发现其他 Git 托管平台 支持这种操作,可以参照 这里 的方法解决。我猜,GitHub 上应该是实现 SVN 到 Git 的协议转换或者简单粗暴的建立了一个 SVN 的镜像仓库。


转载请注明出处:https://www.jianshu.com/p/20205df72001

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant