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 一樣
沒有留言:
張貼留言