repo和Git的關係

2021-09-19 03:31:39 字數 1305 閱讀 5163

git作為乙個版本控制工具,功能很強大,新建分支,切換分支都很快,小團隊用git就能很好地管理好了,但如果是android系統如此龐大的工程呢,我們知道全套android原始碼是很大很大的,目錄結構也很複雜,如果直接將其init成乙個git庫,簡直是災難,也不符合解耦的要求。

要知道git是無法將整個庫中間的某個目錄單獨clone出來的,這樣如果我只是負責frameworks的,但我下**的時候卻得把整個都下下來。

那怎麼辦呢,很簡單,分模組嘛,比如就把根目錄下的每個目錄當做乙個單獨的git庫,這樣開發只要專注於自己的模組就行,其他模組的**就當看不見。嗯,很好,問題似乎解決了。但這樣還不夠,你總得有一套完整的android 原始碼才能編譯出乙個版本吧,你怎麼知道這個大版本裡包含了哪個庫呢,有人會說,為啥要記錄呢,不就這麼些庫嘛,依次取出來不就行了。或許對於我們工作中接觸到的工程規模來說,這樣是夠了,但android,都已經7.1.1了,相比較一開始,android本身也發生了翻天覆地的變化,有些模組在演進過程中可能就漸漸被拋棄了,這個時候我們就需要乙個定義乙個檔案去記錄每乙個版本的android到底用了哪些庫。

以上其實就是repo的原理和所解決的問題,讓我們來看看repo到底是做的。

當你完成了repo init以後,你會在你的目錄下發現乙個.repo的隱藏目錄,進到.repo/manifest/中,開啟default.xml,這就是之前所說的用來記錄乙個版本中需要哪些庫的檔案。下圖是android-4.0.1_r1版本所對應的default.xml檔案:

仔細看看,是不是很熟悉?但google分模組分的更細一些,並不是簡單地將一級目錄直接就劃成乙個模組,比如external,它是以二級目錄劃分的,而device目錄下劃分得更細一些。而revision定義的則是對應庫的對應分支。

好了,這個檔案看完關閉之後,我們在.repo/manifest/目錄下執行git branch -a來看看。

這下就明了了吧,這個manifest目錄本身其實也是乙個git庫,乙個android版本對應乙個分支,其中的default.xml就記錄著這個版本所需要的庫,repo工具再根據這個檔案去把取各個庫的對應分支並最終組合起來。

總結一下,git管理單獨的模組,而repo管理所有的git庫,將多個git庫組合在一起,形成乙個完整的大版本。

repo和Git的關係

git作為乙個版本控制工具,功能很強大,新建分支,切換分支都很快,小團隊用git就能很好地管理好了,但如果是android系統如此龐大的工程呢,我們知道全套android原始碼是很大很大的,目錄結構也很複雜,如果直接將其init成乙個git庫,簡直是災難,也不符合解耦的要求。要知道git是無法將整個...

repo和Git 使用記錄

本地 步驟 1 建立資料夾 helloworld,進入目錄 2 新專案初始化 git init 3 將當前目錄下所有檔案新增到緩衝區 git add 4 將緩衝區 提交到本地倉庫 git commit m 注釋 遠端 步驟 1 在github上建立乙個倉庫 git clone git remote ...

repo和git相關命令

1 git clone ssh 使用者名稱 ip 293 ramus intion server b dev 2 git add 修改完成後新增 3 git commit m 提交 4 git push ssh 使用者名稱 ip 293 ramus intion server head refs f...