文章目錄

  • REPO
  • help 指令思維
  • repo init
  • repo status
  • repo diff [project-list]
  • repo start newbranchname .
  • repo sync kernel
  • 執行repo sync減少同步時間和代碼空間的方法
  • repo branches
  • mirro
  • 使用方式
  • 實測效果
  • 其他
  • mkdir -p的含義
  • 參考鏈接
REPO
help 指令思維
  1. 比如在拉取代碼,不知道指令的用法和有哪些指令,當然用萬能help
  2. 比如在編譯多項目鏡像時,不知道make目標是什麼,依然是萬能help.
repo init

-u 參數指定一個URL
-b 參數來指定某個manifest 分支
-m 參數來選擇獲取 repository 中的某一個特定的 manifest 文件

repo status

查看本地是否有改動

repo diff [project-list]

顯示提交的代碼和當前工作目錄代碼之間的差異

repo start newbranchname .

創建新的branch分支,“.” 代表當前工作的branch分支

repo sync kernel

只同步kernel目錄下的代碼

執行repo sync減少同步時間和代碼空間的方法
repo sync -c --no-tags --prune -j 4。

查看 repo help status 的幫助信息,對所給的各個選項具體説明如下:

-c, --current-branch:fetch only current branch from server.
這個選項指定只獲取執行 repo init 時 -b 選項所指定的分支,不會獲取遠端服務器的分支信息。
例如服務器上新增了其他分支,使用 -c 選項同步後,在本地 git 倉庫執行 git branch -r 命令看不到服務器新增的分支名。如果不加 -c 選項,那麼同步的時候,會打印 “[new branch]” 這樣的信息,使用 git branch -r 命令可查看到服務器新增的分支。

--no-tags:don't fetch tags. 該選項指定不獲取服務器上的tag信息。

--prune:delete refs that no longer exist on the remote.
如果遠端服務器已經刪除了某個分支,在 repo sync 時加上 --prune 選項,可以讓本地倉庫刪除對這個分支的跟蹤引用。
查看 repo 的 .repo/repo/project.py 源碼,這個選項實際上是作為 git fetch 命令的選項來執行。查看 man git-fetch 對自身 --prune 選項的説明如下,可供參考:
-p, --prune
After fetching, remove any remote-tracking references that no longer exist on the remote.

-j JOBS, --jobs=JOBS:projects to fetch simultaneously (default 2).
指定啓用多少個線程來同步。
例如上面的 -j 4 指定用4個線程來同步。如果沒有提供該選項,默認啓用2個線程。
總的來説,在 repo sync -c --no-tags --prune -j 4 命令中,使用 -c 和 --no-tags 選項可以減少需要同步的內容,從而減少要佔用的本地代碼空間,也可以減少一些同步時間。

使用 -j 選項來指定啓用多線程進行同步,可以加快執行速度,也就減少了同步時間。可根據服務器CPU性能設置合適的多線程數目。
使用 --prune 選項去掉已刪除分支的跟蹤引用,一般不會用到,這個選項可加可不加。
repo branches

確認當前處於修改問題的分支

mirro

背景: 有時候本地需要維護多份代碼,其中大部分是相同的。

repo 有提供 mirror 功能,可以幫助減少多份相同代碼的下載時間和本地磁盤佔用。

使用方式

建立一個本地 mirror
就是正常的 repo init xxx 命令,加上 --mirror 參數。然後 repo sync 即可。

得到的這個 repo mirror 不能用於正常開發,就是專用作 mirror 功能的,裏面是很多的 xxx.git

下載時指定 reference
需要下載代碼時,在正常的 repo init xxx 命令後加上 --reference , 是本地的 mirror 路徑。

實測效果

實測建立了 mirror 之後,使用 reference 功能下載的代碼,空間佔用從 17G 下降到了 12G,當然 mirror 本身也佔用了空間。所以必須 SDK 副本必須足夠多才會真正起到節省空間的作用。

對於多人共用一台服務器的情況,在服務器上建立一個公共 mirror,每個人再基於 mirror 下載自己的代碼,是比較合適的。

其他

其實本地保存多份完整副本是比較浪費的,但有時候在一份代碼上用多個分支切換確實不方便。

mkdir -p的含義
mkdir -p /data/svn/repo   # 這三個目錄data、svn、repo都會依次創建
參考鏈接

https://duanqz.github.io/2015-06-25-Intro-to-Repo#35-forall