andriod git repo 使用方法

2021-09-30 07:03:13 字數 3207 閱讀 7905

git 是 linux torvalds 為了幫助管理 linux 核心開發而開發的乙個開放原始碼的分布式版本控制軟體,它不同於subversion 、cvs 這樣的集中式版本控制系統。在集中式版本控制系統中只有乙個倉庫(repository ),許多個工作目錄(working copy ),而像git 這樣的分布式版本控制系統中(其他主要的分布式版本控制系統還有 bitkeeper 、 mercurial 、 gnu arch 、 bazaar 、 darcs 、 svk 、 monotone 等),每乙個工作目錄都包含乙個完整倉庫,它們可以支援離線工作,本地提交可以稍後提交到伺服器上。分布式系統理論上也比集中式的單伺服器系統更健壯,單伺服器系統一旦伺服器出現問題整個系統就不能執行了,分布式系統通常不會因為一兩個節點而受到影響。

因為android 是由kernel 、dalvik 、bionic 、prebuilt 、build 等多個git 專案組成,所以android 專案編寫了乙個名為repo 的python 的指令碼來統一管理這些專案的倉庫,使得git 的使用更加簡單。

這幾天 william 為了拿android 最新的sourcecode ,學習了一下git 和repo 的一些基本操作,整理了乙個如何取得android **的 how-to ,今天把他貼上來。

1 、 git 的安裝

#tar -xjf git-1.6.3.3.tar.bz2

編譯並安裝:

#cd git-1.6.3.3

#./configure

#make;make install

# git --version

git version 1.6.3.3

2 、安裝repo

首先確保在當前使用者的主目錄下建立乙個 /bin 目錄(如果沒有的話),然後把它(~/bin) 加到path 環境變數中

curl >~/bin/repo

別忘了給repo 可執行許可權

chmod a+x ~/bin/repo

3 、初始化版本庫

如果是想把android 當前主線上最新版本的所有的sourcecode 拿下來,我們需要repo 的幫助。

先建立乙個目錄,比如~/android ,進去以後用repo init 命令即可。

repo init -u git:

這個過程會持續很長的時間(至少可以好好睡一覺),具體要多少時間就取決於網路條件了

最後會看到 repo initialized in /android 這樣的提示,就說明本地的版本庫已經初始化完畢,並且包含了當前最新的sourcecode 。

如果想拿某個branch 而不是主線上的**,我們需要用-b 引數制定branch 名字,比如:

repo init -u git: -b cupcake

另一種情況是,我們只需要某乙個project 的**,比如 kernel/common ,就不需要repo 了,直接用git 即可。

git clone git:

這也需要不少的時間,因為它會把整個linux kernel 的**複製下來。

如果需要某個branch 的**,用git checkout 即可。比如我們剛剛拿了kernel/common.get 的**,那就先進入到common 目錄,然後用下面的命令:

git checkout origin/android-goldfish-2.6.27 -b goldfish

這樣我們就在本地建立了乙個名為goldfish 的android-goldfish-2.6.27 分支,**則已經與 android-goldgish-2.6.27 同步。我們可以通過git branch 來列出本地的所有分支。

4 、同步版本庫

使用repo sync 命令,我們把整個 android **樹做同步到本地,同樣,我們可以用類似

repo sync project1 project2 …

這樣的命令來同步某幾個專案

如果是同步android 中的單個專案,只要在專案目錄下執行簡單的

git pull

即可。git 最初是為linux 核心開發而設計,所以對其他平台的支援並不好,尤其是 windows 平台,必須要有cygwin 才可以。現在,得益於 msysgit 專案,我們已經可以不需要cygwin 而使用git 了。另外, git extensions 是乙個非常好用的windows shell 擴充套件,它能與資源管理器緊密整合,甚至提供了visual studio 外掛程式。它的官方**上有一分不錯的 說明文件,感興趣的朋友可以看一看。

至於git 的參考文件,我推薦 git magic ,這裡還有乙個 git magic 的中文版 。

獲取anroid linux kernel 過程:

[root@localhost ~]# mkdir bin

[root@localhost ~]# curl >~/bin/repo

[root@localhost bin]# cd bin/

[root@localhost bin]# chmod a+x ~/bin/repo

[root@localhost bin]# cd /usr/local/src/

[root@localhost src]# mkdir project-android

[root@localhost src]# cd project-android/

[root@localhost project-android]# git clone git:

[root@localhost src]# cd common

[root@localhost common]# ls

arch credits drivers include kbuild maintainers net samples sound

block crypto firmware init kernel makefile readme scripts usr

[root@localhost common]# git branch -a

* android-2.6.27

diff

remotes/origin/head -> origin/android-2.6.27

remotes/origin/android-2.6.25

remotes/origin/android-2.6.27

remotes/origin/android-2.6.29

remotes/origin/android-goldfish-2.6.27

remotes/origin/android-goldfish-2.6.29

VMware License Server使用經驗

近期在測試vmware server,在使用vmware license server的時候碰到一些問題,經過兩天的實驗,問題得以解決,現記錄如下,以供朋友們參考。1 複製license檔案 在安裝vmware virtualcenter的時候,會一同安裝license server伺服器。如果你在...

Django Rest framework使用例項

一 修改配置檔案 setting.py django.contrib.admin django.contrib.auth django.contrib.contenttypes django.contrib.sessions django.contrib.messages django.contri...

Android AlarmManager 使用指南

intent intent new intent intent.setaction updatemgr.check update action 如果你的flag 是flag one shot,那麼你就只能受到一次廣播。如果使用setrepeat,你設定的intervalmills 少於60s,那麼就...