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