IDEA下使用gerrit项目指南
注:由于svn和git在原理上存在较大差异,所以在使用git之前,请务必先了解git是如何管理项目的。可阅读以下链接了解
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
步骤一:准备事项
- git本地安装(自行百度)
- idea安装gerrit插件
- gerrit账号密码
- gerit地址:http://172.1.2.20:30181
步骤二:gerrit设置
- 设置http密码
输出用户名后点击生成密码即可,注意要把生成的密码保存到本地,方便以后使用。
- 设置idea gerrit
此处账号密码即上一步的账号密码。
在git设置中,将ssh设置为native
- 生成ssh public key(公钥)
打开git命令行
按以下步骤输入命令行
ssh-keygen -t rsa -C "hany.mo@sunyard.com" -b 4096 (生成公钥,注意要使用自己gerrit服务器上的邮箱地址)
cat ~/.ssh/id_rsa.pub (查看公钥,并复制文本中的公钥)
将复制的公钥粘贴到gerrit服务器上的公钥并添加
然后将本机的git设置一下账号名和邮箱地址
git config --global user.name “hany.mo” //设置成gerrit上的用户名
git config --global user.email “hany.mo@sunyard.com” //设置成gerrit上的用户邮箱地址
步骤三:下载代码
找到对应的项目并拷贝clone地址,注意将地址中的29418修改为30191
执行命令,第一次连接时需要确认,输入yes即可
(注意,此时会在你的当前目录clone代码,请前往你的工作目录再执行)
步骤四:选择你的相应分支
以welkin为例,git存在不同的分支,默认为master分支,所以在开发项目时,记得选择自己的相应分支。现在我要在origin/welkin-webjar-sunyard 这个分支下进行开发,那么就需要切换工作的分支了。
- 前往项目目录,并查看当前分支
可以看到本地并没有origin/welkin-webjar-sunyard这个分支
- 切换分支
此时再打开项目,发现此时已经是目标分支的内容了
步骤五:提交代码
- 配置
打开项目后,如果发现底部没有versioncontroll,按图示操作
此时则出现了version control
- 本地commit(同svn)
- Push到服务器
按ctrl+shift+k进行push
注意勾选图示中位置
Push成功即可(若不成功,先自行百度)
服务器迁移后gerrit相关修改方法
步骤一:修改idea中的geriit地址:
url修改为http://172.1.2.20:30181即可
步骤二:修改项目gerrit地址:
在项目的目录下执行git命令,到.git文件夹下。
修改config文件
将原先的地址修改为172.1.2.20即可(不会命令行修改的请自行百度)。
查看是否已经变成新的地址。
步骤三:修改钩子
注意,此时要确认当前目录是在项目的所在文件夹目录(和clone项目时的目录一样),以pms为例,pms项目目录为:/f/work/git/pms,那么这一步操作要在/f/work/git目录下进行。
再次复制clone项目时所需的命令行,删除&&以及之前的命令,当然,29418端口也要修改为30191如下图:
执行结束,如果出现错误,很有可能是所在目录部队,请重新阅读当前步骤。
好了,再试试更新,提交等操作,就可以了
附上一张命令汇总图
使用过程中的各种问题汇总:
1.当提交到gerrit之后,审核没有通过,需要撤回修改时:
在idea的gerrit面板中找到自己需要撤回的代码,右键菜单中选择Abandon。
Abandon之后,在version control中查看log,选择对应的数据,右键菜单中选择undo commit,之后,就能在local chages中看到自己撤回的代码了。(注意一定要undocommit,否则你修改代码之后提交到gerrit之后,审核员将无法submit你的代码)
2.当push代码时,发现push列表中出现一些Merge信息时
出现这个的原因是在你修改一个文件的过程中,服务器上刚好有人修改了该代码而你又没有及时去更新你的代码。此时如果提交你的代码到gerrit,审核员可能无法进行submit(存在冲突)。所以为了不必要的麻烦,遇到这个情况时,按以下步骤进行操作:
选择rebase
点击rebase,然后按指示进行操作下一步即可(如果有过程中有冲突请手动合并)
3.当审核员submit你的代码时,出现冲突:
表示有两次提交的代码涉及同一代码的修改,而又未进行rebase操作就提交到服务器。
需先abandon掉后提交的代码。提交人在idea的gerrit面板中找到自己需要撤回的代码,右键菜单中选择Abandon。这时候先提交的代码已经可以submit,先进行submit操作。
Abandon之后,在version control中查看log,选择对应的数据,右键菜单中选择undo commit,之后,就能在local chages中看到自己撤回的代码了。(注意一定要undocommit,否则你修改代码之后提交到gerrit之后,审核员将无法submit你的代码)
注:如果撤回的代码并非最后一次提交,即之后存在多次commit,后面的commit通过,那么也要按顺序先把后面的代码undocommit,直到把要撤回的代码undocommit,再一个个提交,或者多次commit合并成一个接交
更新代码,再重新提交,push到gerrit的时候会出现这种情况,是因为在你修改一个文件的过程中,服务器上刚好有人修改了该代码而你又没有及时去更新你的代码。点击cancel。
点击idea上方VCS,点击Git,点击rebase。
点击rebase,然后按指示进行操作下一步即可(如果过程中有冲突请手动合并)
再重新push代码到gerrit,这样情况就正常了。