顯示具有 Gerrit 標籤的文章。 顯示所有文章
顯示具有 Gerrit 標籤的文章。 顯示所有文章

2013年9月13日 星期五

[Gerrit][Git] 新增/刪除Branch

1). 在local端新增branch並切換

1.1). 新增branch,再切換到該branch
$ git branch [branch_name]
$ git checkout [branch_name]

1.2). 新增branch並直接切換到該branch
$ git checkout -b [branch_name]

1.2). 以某個tag為基準,新增branch並直接切換到該branch
$ git checkout [tag_name] -b [branch_name]


2). 在remote端新增branch
$ git push origin [local_branch_name]:[remote_branch_name]

3). 在local端刪除branch (-D為強制)
$ git branch -d [branch_name]
$ git branch -D [branch_name]

4). 在remote端刪除branch
$ git push origin :[branch_name]

※在Gerrit要刪除remote端的branch
在push的權限中,必須增加force push才能夠刪除

※新增branch
git branch [branch_name] [base_on_which_branch]
若是[base_on_which_branch]沒有寫,預設是master
若是此git沒有master branch,則後面沒寫會無法新增branch

2013年9月4日 星期三

[Gerrit] [Git] [Repo] 新增/刪除tag

1). 在local端新增tag
$ git tag -a [tag_name] [commit_id]

2). 在remote端新增tag
$ git push origin [tag_name]
$ git push origin --tag (一次將所有tag push上去)

3). 在local端刪除tag
 $ git tag -d [tag_name]

4). 在remote端刪除tag
$ git push origin :refs/tags/[tag_name]

//======================================

9/4新增repo的部份
在repo codebase之下的用法

1). 在local端新增tag
$ repo forall -c 'git tag [tag_name]'

2). 在remote端新增tag
$ repo forall -c 'git push --tags'

3). 在local端刪除tag
$ repo forall -c 'git tag -d [tag_name]'

4). 在remote端刪除tag(需取得gerrit權限,目前沒嘗試過)
$ repo forall -c 'git push origin :refs/tags/[tag_name]'

[Gerrit] 在Gerrit網頁上加客製化修改

Gerrit網頁上方有能夠讓使用者客製化的區域
可藉由修改html檔,加上想要客製化的內容
請在放置gerrit的目錄底下的etc中增加GerritSiteHeader.html檔案
/home/gerrit/review_site/etc/GerritSiteHeader.html

內容請用<pre></pre>夾起來
example:
<pre>
Hello
World
</pre>

區域為底下圖片底色紅色的部份



2013年8月26日 星期一

[Gerrit] 解決Gerrit 2.5版本以上gitweb "404 no projects found"

Gerrit 2.5版以上有即使在All-Projects設了refs/*->read:allow
Gitweb仍舊會"404 no projects found"的bug

workround
在refs/meta/config->read:allow Project Owners
取消Exclusive的勾選
雖然被設定可讀權限的人可修改project access的狀況
但會以等待review方式呈現,且無submit的權限
所以暫時可以這個方式作為workaround

※refs:http://blog.sina.com.cn/s/blog_4fb490ff01018i0v.html

2013年8月7日 星期三

[Linux][Git][Gerrit] 修改git clone codebase的名字

當從gerrit上git clone codebase時
有些server會檢查用戶name
若name不符合時則無法get code

此時可以在~/.ssh/config設置get code的名字
Hostname ip,ip,ip,ip
#若是需要設公司proxy
ProxyCommand connect -H ip.ip.ip.ip:port %h %p
User account1

EX: For gerrit
hostname ip,ip,ip,ip
port 29418
user account1

2013年3月27日 星期三

[Git][Gerrit] 移動版本庫;從git移到gerrit


1. Gerrit先開project

2. 可看到目前遠端版本庫僅有origin
$ git remote -v

3. 在Gerrit Project中新增一個遠端版本庫git1
$ git remote add git1 ssh://git@10.109.39.56/home/git/git1.git

4. 可看到目前遠端版本庫有origin跟git1
$ git remote -v

5. 將git1的資料fetch下來
$ git fetch git1

6. 可在branch中看到remote的git1
$ git branch -a

7. 切換到master,並將remote的git1 merge進來
$ git checkout master
$ git merge git1/master

8. 上傳
$ git push

8.1 若是要將A branch push到B branch
$ git push origin [branch_a]:[branch_b]

2013年2月21日 星期四

[Gerrit][Git] path conflict的方法

Error Message:

Your change could not be merged due to a path conflict.
Please merge (or rebase) the change locally and upload the resolution for review.








紀錄,等待實驗..
http://cmc925.blogspot.tw/2011/12/your-change-could-not-be-merged-due-to.html
http://blog.csdn.net/wtysksk/article/details/8123639

--

130222 update
實驗過

1. 已經push change到gerrit
2. 在local端下git pull --rebase
3. 重新push到原有的change
$ git push ssh://[account]/[gerrit_project_path] HEAD:refs/change/[changeID]
4. 在gerrit中原有的change會顯示上了第二個patch

2013年1月8日 星期二

[Gerrit] [MySQL] 檢查Gerrit上是否尚有open change

#! /bin/bash

project_name='test'

open_change=$(echo "SELECT change_key FROM changes WHERE (dest_project_name='$project_name') and (open='Y');" | mysql -u[account] -p[password] reviewdb --silent)

if [ ! -n "${open_change}" ]; then
    echo "It dose not exits changes on Gerrit."
    exit 0
else
    echo "It exits changes on Gerrit."
    exit 1
fi

2012年12月24日 星期一

[Gerrit] [Jenkins] 在LDAP auth之下,建立一個內部CI Server使用帳號

要使用Gerrit搭配Jenkins auto build並auto code review/verify使用
需要建立一個Jenkins使用的帳號
若在LDAP auth之下
可使用指令建立內部使用的帳號

ssh -p <port> <host> gerrit create-account \ [--group <GROUP>] \ [--full-name <FULLNAME>] \ [--email <EMAIL>] \ [--ssh-key -|<KEY>] \ <USERNAME>

1). 建立帳號jenkins,指定公鑰
$ cat ~/.ssh/id_rsa.pub  | ssh -p 29418 [Admin Account]@[ip] gerrit create-account --ssh-key - --full-name jenkins jenkins

2). 建立帳號jenkins,指定公鑰,指定名稱為jenkins
$ cat ~/.ssh/id_rsa.pub  | ssh -p 29418 [Admin Account]@[ip] gerrit create-account --ssh-key - --full-name jenkins jenkins



ref:http://gerrit.googlecode.com/svn/documentation/2.2.1/cmd-create-account.html

2012年2月17日 星期五

[MySQL][Gerrit] 產出三個report紀錄_view

※說明:
● 將原本建table改成建view
● 因view無法建key,原本在change_messages2建index key,刪掉重複的資料
● 改成下group by,每筆change_id只要列一筆資料就好

//=========================================================

1). [report_sheet1]

//新增change_messages1
//join author_id及name

CREATE VIEW `change_messages1` AS
select `change_messages`.`author_id`,
`accounts`.`full_name` AS `reviewer_name` ,
`change_messages`.`written_on`,
`change_messages`.`message`,
`change_messages`.`change_id`,
`change_messages`.`uuid`
from `change_messages`
left join `accounts`
on `change_messages`.`author_id`=`accounts`.`account_id`

//產生report_sheet1
//刪掉SI_num
CREATE VIEW `report_sheet1` AS
SELECT `changes`.`change_id`,
`changes`.`change_key`,
`changes`.`created_on` AS `create_time`,
`change_messages1`.`written_on` AS `review_time`,
SEC_TO_TIME( TimeStampDiff(second,`created_on`,`written_on`) ) AS `review_time_spent`,
`accounts`.`full_name` AS `owner_name`,
`change_messages1`.`reviewer_name`,
`changes`.`subject` AS `commit_subject`,
`changes`.`dest_project_name` AS `project_name`,
`changes`.`dest_branch_name` AS `branch_name`
FROM `changes`
LEFT JOIN `change_messages1` ON `changes`.`change_id`=`change_messages1`.`change_id`
LEFT JOIN `accounts` ON `changes`.`owner_account_id`=`accounts`.`account_id`
WHERE (`changes`.`owner_account_id`!=`change_messages1`.`author_id`) and (TimeStampDiff(second,`created_on`,`written_on`) >= 86400)



//=========================================================

2). [report_sheet2]

//新增change_messages2
//join author_id及name
//搜尋reviewer_message有'not be merged'
//刪除重複的change_id - 用group by,只列出相同change_id的其中一筆
CREATE VIEW `change_messages2` AS
SELECT `change_messages`.`author_id`,
`accounts`.`full_name` AS `reviewer_name`,
`change_messages`.`written_on`,
`change_messages`.`message`,
`change_messages`.`change_id`,
`change_messages`.`uuid`
FROM `change_messages`
LEFT JOIN `accounts`
ON `change_messages`.`author_id`=`accounts`.`account_id`
WHERE `message` LIKE '%not be merged%'
OR `message` LIKE '%Abandoned%'
OR `message` LIKE '%Do not submit%'
OR `message` LIKE '%Fails%'
group by `change_messages`.`change_id`


//建立changes1
//關聯change及review
//增加一個num(AUTO_INCREMENT)
CREATE VIEW `changes1` AS
SELECT `changes`.`change_key`,
`changes`.`created_on`,
`changes`.`last_updated_on`,
`changes`.`sort_key`,
`changes`.`owner_account_id`,
`accounts`.`full_name` AS `owner_name`,
`changes`.`dest_project_name`,
`changes`.`dest_branch_name`,
`changes`.`open`,
`changes`.`status`,
`changes`.`nbr_patch_sets`,
`changes`.`current_patch_set_id`,
`changes`.`subject`,
`changes`.`topic`,
`changes`.`row_version`,
`changes`.`change_id`,
`change_messages1`.`written_on`,
`change_messages1`.`reviewer_name`,
`change_messages1`.`message`
from `changes`
left join `accounts`
on `changes`.`owner_account_id`=`accounts`.`account_id`
left join `change_messages1`
on `changes`.`change_id`=`change_messages1`.`change_id`


//產生report_sheet2
CREATE VIEW `report_sheet2` AS
SELECT `change_messages2`.`change_id`,
`changes1`.`change_key`,
`changes1`.`open`,
`changes1`.`status`,
`changes1`.`written_on`,
`changes1`.`owner_name`,
`changes1`.`reviewer_name`,
`changes1`.`message` AS `reviewer_message`,
`changes1`.`subject` AS `commit_subject`,
`changes1`.`dest_project_name` AS `project_name`,
`changes1`.`dest_branch_name` AS `branch_name`
FROM `change_messages2`
LEFT JOIN `changes1`
ON `change_messages2`.`change_id`=`changes1`.`change_id`
ORDER BY `change_id` ASC, `written_on` ASC



//=========================================================

3). [report_sheet3]

//找出commit裡沒有topic, release note, involve, comment
CREATE VIEW `report_sheet3` AS
SELECT `changes`.`change_id`,
`changes`.`change_key`,
`changes`.`created_on` AS `create_time`,
`change_messages1`.`written_on` AS `review_time`,
SEC_TO_TIME( TimeStampDiff(second,`created_on`,`written_on`) ) AS `review_time_spent`,
`accounts`.`full_name` AS `owner_name`,
`change_messages1`.`reviewer_name`,
`changes`.`subject` AS `commit_subject`,
`changes`.`dest_project_name` AS `project_name`,
`changes`.`dest_branch_name` AS `branch_name`
FROM `changes`
LEFT JOIN `change_messages1` ON `changes`.`change_id`=`change_messages1`.`change_id`
LEFT JOIN `accounts` ON `changes`.`owner_account_id`=`accounts`.`account_id`
WHERE `subject` NOT LIKE '%topic%'
AND `subject` NOT LIKE '%release note%'
AND `subject` NOT LIKE '%involve%'
AND `subject` NOT LIKE '%comment%';

[MySQL][Gerrit] 產出三個report紀錄

※備註-Gerrit內建所需表格說明:
● [accounts]:帳號id及name
● [changes]:列出所有changes的資料(RD上到gerrit的code)
● [changes_messages]:列出reviewer、gerrit系統回覆change的資料

※說明:
● 產出三個表格,Wei會將此表格轉成excel
● [report_sheet1]:列出reviewer花了多久時間回覆RD上的code
● [report_sheet2]:列出被reviewer reject的change及狀態
● [report_sheet3]:列出沒有commit rule的關鍵字

//=========================================================

1). [report_sheet1]

//新增change_messages1
//join author_id及name
CREATE TABLE `reviewdb`.`change_messages1` (
`author_id` INT( 11 ) NULL ,
`reviewer_name` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL ,
`written_on` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL ,
`message` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL ,
`change_id` INT( 11 ) NOT NULL ,
`uuid` VARCHAR( 40 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,
PRIMARY KEY ( `change_id` , `uuid` )
) ENGINE = MYISAM ;

insert into `change_messages1` (`author_id`,`reviewer_name`,`written_on`,`message`,`change_id`,`uuid`)
select `change_messages`.`author_id`,`accounts`.`full_name`,`change_messages`.`written_on`,`change_messages`.`message`,`change_messages`.`change_id`,`change_messages`.`uuid`
from `change_messages`
left join `accounts`
on `change_messages`.`author_id`=`accounts`.`account_id`

//產生report_sheet1
CREATE TABLE `reviewdb`.`report_sheet1` (
`num` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`change_id` INT( 11 ) NOT NULL ,
`change_key` VARCHAR( 60 ) NOT NULL ,
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`review_time` TIMESTAMP NOT NULL ,
`review_time_spent` TIME NOT NULL ,
`owner_name` VARCHAR( 255 ) NULL ,
`reviewer_name` VARCHAR( 255 ) NULL ,
`commit_subject` VARCHAR( 255 ) NOT NULL ,
`project_name` VARCHAR( 255 ) NOT NULL ,
`branch_name` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;

INSERT INTO `report_sheet1` (change_id,change_key,create_time,review_time,review_time_spent,owner_name,reviewer_name,commit_subject,project_name,branch_name)
SELECT `changes`.`change_id`,
`changes`.`change_key`,
`changes`.`created_on`,
`change_messages1`.`written_on`,
SEC_TO_TIME( TimeStampDiff(second,`created_on`,`written_on`) ),
`accounts`.`full_name`,
`change_messages1`.`reviewer_name`,
`changes`.`subject`,
`changes`.`dest_project_name`,
`changes`.`dest_branch_name`
FROM `changes`
LEFT JOIN `change_messages1` ON `changes`.`change_id`=`change_messages1`.`change_id`
LEFT JOIN `accounts` ON `changes`.`owner_account_id`=`accounts`.`account_id`
WHERE (`changes`.`owner_account_id`!=`change_messages1`.`athor_id`) and (TimeStampDiff(second,`created_on`,`written_on`) >= 86400)


//=========================================================

2). [report_sheet2]

//新增change_messages2
//join author_id及name
//搜尋reviewer_message有'not be merged'
//刪除重複的change_id
CREATE TABLE `reviewdb`.`change_messages2` (
`author_id` INT( 11 ) NULL ,
`reviewer_name` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL ,
`written_on` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL ,
`message` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL ,
`change_id` INT( 11 ) NOT NULL ,
`uuid` VARCHAR( 40 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,
PRIMARY KEY ( `change_id` , `uuid` )
) ENGINE = MYISAM ;

INSERT INTO `change_messages2` (`author_id`,`reviewer_name`,`written_on`,`message`,`change_id`,`uuid`)
SELECT `change_messages`.author_id,
`accounts`.`full_name` AS reviewer_name,
`change_messages`.written_on,
`change_messages`.message,
`change_messages`.change_id,
`change_messages`.uuid
FROM `change_messages`
LEFT JOIN `accounts`
ON `change_messages`.`author_id`=`accounts`.`account_id`
WHERE `message` LIKE '%not be merged%'
OR `message` LIKE '%Abandoned%'
OR `message` LIKE '%Do not submit%'
OR `message` LIKE '%Fails%';
ALTER IGNORE TABLE `change_messages2` ADD UNIQUE INDEX(`change_id`);


//建立changes1
//關聯change及review
//增加一個num(AUTO_INCREMENT)
CREATE TABLE `reviewdb`.`changes1` (
`num` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`change_key` VARCHAR(60) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`created_on` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_updated_on` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
`sort_key` VARCHAR(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`owner_account_id` INT(11) NOT NULL DEFAULT '0',
`owner_name` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`dest_project_name` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`dest_branch_name` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`open` CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'N',
`status` CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`nbr_patch_sets` INT(11) NOT NULL DEFAULT '0',
`current_patch_set_id` INT(11) NOT NULL DEFAULT '0',
`subject` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`topic` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`row_version` INT(11) NOT NULL DEFAULT '0',
`change_id` INT(11) NOT NULL DEFAULT '0',
`written_on` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`reviewer_name` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`reviewer_message` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL
) ENGINE = MyISAM;

insert into changes1(`change_key`,`created_on`,`last_updated_on`,`sort_key`,`owner_account_id`,`owner_name`,`dest_project_name`,`dest_branch_name`,`open`,`status`,`nbr_patch_sets`,`current_patch_set_id`,`subject`,`topic`,`row_version`,`change_id`,`written_on`,`reviewer_name`,`reviewer_message`)
select `changes`.`change_key`,
`changes`.`created_on`,
`changes`.`last_updated_on`,
`changes`.`sort_key`,
`changes`.`owner_account_id`,
`accounts`.`full_name`,
`changes`.`dest_project_name`,
`changes`.`dest_branch_name`,
`changes`.`open`,
`changes`.`status`,
`changes`.`nbr_patch_sets`,
`changes`.`current_patch_set_id`,
`changes`.`subject`,
`changes`.`topic`,
`changes`.`row_version`,
`changes`.`change_id`,
`change_messages1`.`written_on`,
`change_messages1`.`reviewer_name`,
`change_messages1`.`message`
from `changes`
left join `accounts`
on `changes`.`owner_account_id`=`accounts`.`account_id`
left join `change_messages1`
on `changes`.`change_id`=`change_messages1`.`change_id`


//產生report_sheet2
CREATE TABLE `reviewdb`.`report_sheet2` (
`num` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`change_id` INT( 11 ) NOT NULL ,
`change_key` VARCHAR( 60 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,
`open` CHAR( 1 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,
`status` CHAR( 1 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,
`written_on` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL ,
`owner_name` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL ,
`reviewer_name` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL ,
`reviewer_message` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL ,
`commit_subject` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,
`project_name` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,
`branch_name` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
) ENGINE = MYISAM ;

INSERT INTO `report_sheet2` (`change_id`,`change_key`,`open`,`status`,`written_on`,`owner_name`,`reviewer_name`,`reviewer_message`,`commit_subject`,`project_name`,`branch_name`)
SELECT `change_messages2`.`change_id`,
`changes1`.`change_key`,
`changes1`.`open`,
`changes1`.`status`,
`changes1`.`written_on`,
`changes1`.`owner_name`,
`changes1`.`reviewer_name`,
`changes1`.`reviewer_message`,
`changes1`.`subject`,
`changes1`.`dest_project_name`,
`changes1`.`dest_branch_name`
FROM `change_messages2`
LEFT JOIN `changes1`
ON `change_messages2`.`change_id`=`changes1`.`change_id`
ORDER BY `change_id` ASC, `written_on` ASC



//=========================================================

3). [report_sheet3]

//找出commit裡沒有topic, release note, involve, comment
CREATE TABLE `reviewdb`.`report_sheet3` (
`num` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`change_id` INT( 11 ) NOT NULL ,
`change_key` VARCHAR( 60 ) NOT NULL ,
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`review_time` TIMESTAMP NOT NULL ,
`review_time_spent` TIME NOT NULL ,
`owner_name` VARCHAR( 255 ) NULL ,
`reviewer_name` VARCHAR( 255 ) NULL ,
`commit_subject` VARCHAR( 255 ) NOT NULL ,
`project_name` VARCHAR( 255 ) NOT NULL ,
`branch_name` VARCHAR( 255 ) NOT NULL ,
`comment` TEXT NULL
) ENGINE = MYISAM ;

INSERT INTO `report_sheet3` (change_id,change_key,create_time,review_time,review_time_spent,owner_name,reviewer_name,commit_subject,project_name,branch_name)
SELECT `changes`.`change_id`,
`changes`.`change_key`,
`changes`.`created_on`,
`change_messages1`.`written_on`,
SEC_TO_TIME( TimeStampDiff(second,`created_on`,`written_on`) ),
`accounts`.`full_name`,
`change_messages1`.`reviewer_name`,
`changes`.`subject` AS `commit_subject`,
`changes`.`dest_project_name`,
`changes`.`dest_branch_name`
FROM `changes`
LEFT JOIN `change_messages1` ON `changes`.`change_id`=`change_messages1`.`change_id`
LEFT JOIN `accounts` ON `changes`.`owner_account_id`=`accounts`.`account_id`
WHERE `subject` NOT LIKE '%topic%'
AND `subject` NOT LIKE '%release note%'
AND `subject` NOT LIKE '%involve%'
AND `subject` NOT LIKE '%comment%';