2013年9月17日 星期二

一些 git / gerrit / ssh 設定

git / gerrit

alias

常用的指令例如 status 可以減化成短指令

~/.gitconfig

[alias]  
    ci = commit  
    st = status  
    co = checkout  
    l = log --stat=140,100  
    br = branch  
    p = cherry-pick  
    r = rebase  
    f = fetch  
    up = pull --rebase  

指令就變為

$ git st

自動產生 Change-Id

單獨 git clone 下來的 git repository 不會有 commit-msg hook
所以 push 到 gerrit 時,不會有 Change-Id
沒有 Change-Id 的話,重複 push 不會在同一個 patch 裡繼續疊加
所以 commit-msg hook 是必需要用的
(除非要手動從 gerrit 上 copy 下來...何苦呢...)

如果手邊有 BSP

    $ find . -name commit-msg \<BSP_ROOT>/.repo

把他 copy 到 .git/hooks/ 裡

gerrit server

    $ scp -p -P 29418 \<SERVER>:hooks/commit-msg .git/hooks/

template

每次 git repository commit 時,如果要填寫固定格式
可以先將文字檔存下來,就不會每次都要打一次

per repository

進 git repository 寫一個文字檔 .gittemplate

$ git config commit.template=.gittemplate

global

放在 ~/.gitconfig 裡指定

[commit]  
    template = ~/.gittemplate

手動 push 到指定的 branch

$ git push ssh://\<SERVER>:29418/\<PATH> HEAD:refs/for/\<BRANCH>

PATH 可以使用

$ git config -l | grep url remote.origin.url=ssh://\<SERVER>:29418/here/is/my/branch

在此可以知道路徑是 here/is/my/branch

BRANCH

$ git branch -a
...
remotes/origin/aosp/jb-release
...

在裡面找需要的 branch, 不需要包 remotes/origin
所以這邊需要 aosp/jb-release

$ git push ssh://mickey.acer.com.tw:29418/here/is/my/branch HEAD:refs/for/aosp/jb-release

ssh

設定 gerrit

為了不要每次下指令都指定 user name 也就是

$ repo init -u ssh://my.id@\<SERVER>...... 

~/.ssh/config

Host \<SERVER>
Port 29418
User XXXX.YYY

跟 Gerrit 裡 Settings -> Profile -> Username 一樣

沒有留言:

張貼留言