repo+git submodule 實現代碼嵌套並且批量管理


最近有個新項目,倉庫是一個個獨立的,最開始的時候采用單個倉庫git clone 下來,覺得效率太低 ,研究了下repo 和git submodule ,組合起來實現了代碼嵌套和批量管理。

首先寫一個manifest xml 文件,

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <notice>Code Fetch='0'</notice>
  <remote fetch="${gitserver}" name="origin" review="${review_server}"/>
  <project name="${gitpath1}" path="${lcoalpath1}" revision="master"/>
  <project name="${gitpath2}" path="${lcoalpath1}/${lcoalpath2}" revision="master"/>
  <project name="${gitpath3}" path="${lcoalpath1}/${lcoalpath3}" revision="master"/>
</manifest>

然后把這個manifest 推送到manifest 倉庫里。 

 

用repo init 命令拉下來這個代碼,repo init -m ${manifest_name} -u ${manifest_url} , repo sync  這樣會拉一套代碼下來,代碼結構已經實現了嵌套。但是此時在${localpath1}下git status,會發現提示需要git add 子庫,子庫現在對於gitpath1 這個倉庫而言是一個新的文件夾。

在后面git clean 強制clean的時候這個文件夾可能會被清除,也為了保證代碼看上去清爽,這時候就需要git submodule 上場了。

在${lcoalpath1} 下分別git submodule add <url> <path> 把兩個子庫加到git submodule 中去,然后git status, 會發現多了個.gitmodules 文件,git add , git commit git push 正常的操作流程之后,重新建個文件夾,repo init ,repo sync 下來會發現代碼結構ok, git status 也不再提示是新文件要git add了。 

發現一個問題,只要不單獨用git submodule 更新代碼, .gitmodules 文件中的url 和branch 都是不生效的,會被repo  manifest中的path和branch 覆蓋,不用擔心里面的配置會對代碼分支路徑的影響 。這樣就完美的實現了repo 控制代碼,git submodule 實現代碼嵌套。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM