git只拉取gitlab项目的特定目录
git只拉取gitlab项目的特定目录
一、需求引入
话说我们有个爬取别人网站静态页,然后加工为自己所用的程序(python写的),这个程序放在我们的内网服务器上(win7系统):装有python3.7.9、代码编辑器:Visual Studio Code(非常好用,程序员的福音)
架构图如下:
简单说下整个流程,内网win7在系统任务计划的设置下,每天定时跑python程序,从别人的网站去拉数据,页面加工逻辑:有需要加载js才能处理的页面【处理起来相对较慢】,也有直接调接口返回数据【比较快】;处理好后会推送到gitlab项目上,该项目有好几个目录,线上服务器只需要拉取A.1的目录即可(都是些html文件),然后nginx转发到这个目录就能外网访问到这些静态页面了。
这里主要说下第3步如何拉取某个项目下的特定目录的。
二、问题解决
1、gitlab上申请一个对这个项目只有reporter权限的用户,代表只能拉取,不能上传数据,记得提前把服务器的公钥放进去gitlab上。
2、创建作为本地仓库的文件夹,用来存放拉取的目录
mkdir local-static && cd local-static git init
3、添加远程仓库地址,实现拉取remote的all objects信息
git remote add origin ssh://git@gitlab.example.com/项目名.git
4、开启sparse clone
git config core.sparsecheckout true #注意是从项目名开始算的相对目录 echo "1级目录A/2级目录A.1" >> .git/info/sparse-checkout
5、查看确认
cat .git/info/sparse-checkout
正确信息应该显示:1级目录A/2级目录A.1
6、指定master分支去拉取代码
git pull origin master