windows集成gitlab、gerrit等多git开发环境介绍

在git代码开发环境时,有时会向gitlab、gerrit、gitee等代码托管平台提交代码,这就需要在windows开发环境集成多种git代码托管平台环境,本文将介绍如何在windows环境集成这几种环境,以gitlab、gerrit为例。

环境准备

在windows上需要安装git环境,这里不做介绍,git安装请参考

C:\Users\Admin>git --version
git version 2.33.1.windows.1

gitlab、gerrit服务器

gerrti安装请参考 CentOS 7.x安装部署Gerrit完整教程_苹果树上的你的博客-CSDN博客

gitlab按照请参考gitlab下载安装及部署 - 走看看

gerrit 服务器 192.168.1.161

gitlab服务器 192.168.1.162

秘钥生成

若已经在windows环境做了全局配置则需要清除全局配置

C:\Users\Admin>git config --global --list
user.email=xxxxx
user.name=xxxxx

清除全局配置

C:\Users\Admin>git config --global --unset user.name "你的名字"
C:\Users\Admin>git config --global --unset user.email "你的邮箱"

为gitlab环境生成公钥私钥

C:\Users\Admin>ssh-keygen -t rsa -C "你的邮箱"

回车

Enter file in which to save the key (/c/Users/Admin/.ssh/id_rsa): id_rsa_gitlab

id_rsa_gitlab 为手动输入的私钥名称,顾名思义是为gitlab生成的私钥

连续回车后会在当前文件夹生成公钥、私钥等信息文件

同理为gerrit环境生成公钥私钥

C:\Users\Admin>ssh-keygen -t rsa -C "你的邮箱"

回车

Enter file in which to save the key (/c/Users/Admin/.ssh/id_rsa): id_rsa_gerrit

id_rsa_gerrit 为手动输入的私钥名称,顾名思义是为gerrit生成的私钥

连续回车后会在当前文件夹生成公钥、私钥等信息文件

以上两步完成后会生成如下文件

  • id_rsa_gerrit

  • id_rsa_gerrit.pub

  • id_rsa_gitlab

  • id_rsa_gitlab.pub

拷贝

将生成在当前文件夹下的这四个文件复制到登录用户的.ssh目录 C:/Users/Admin/.ssh

配置

切换到C:/Users/Admin/.ssh目录,在当前目录创建config.txt文件

# gitlab
   # gitlab配置
    Host 192.168.1.162
    HostName 192.168.1.162
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_gitlab
    User git
# gerrit 29418为gerrit端口
    Host 192.168.1.161
    HostName 192.168.1.161
    User admin
    PubkeyAcceptedKeyTypes +ssh-rsa
    IdentityFile ~/.ssh/id_rsa_gerrit
    Port 29418

保存,重命名config.txt为config

将刚才生成的每个环境的公钥配置到对应的环境,如,复制id_rsa_gerrit.pub里的公钥信息到gerrit SSH key中

 

同理,在gitlab web 页面设置ssh keys,省略。

验证

在桌面想创建一个空文件夹 -> 右键 -> Git Bash Here

Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code
$ git init
Initialized empty Git repository in C:/Users/Admin/Desktop/my-code/.git/

clone项目

Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code (master)
$ git clone ssh://192.168.1.161:29418/demo-repo
Cloning into 'demo-repo'...
remote: Counting objects: 16, done
remote: Finding sources: 100% (16/16)
remote: Total 16 (delta 2), reused 14 (delta 2)
Receiving objects: 100% (16/16), done.
Resolving deltas: 100% (2/2), done.

Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code (master)
$
$ cd demo-repo
$  git config --local user.email "liao535299@163.com"
$  git config --local user.name "admin"
$ echo 'hello gerrit' >> my_test.txt
$ git add my_test.txt
$ git commit -m 'this a test'

注意,第一次push时,gerrit会报错,按照错误操作即可

Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code/demo-repo (master)
$ git push origin HEAD:refs/for/master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 273 bytes | 273.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1)
remote: Processing changes: refs: 1, done
remote: ERROR: commit 2bacf9b: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote:   gitdir=$(git rev-parse --git-dir); scp -p -P 29418 admin@192.168.1.161:hooks/commit-msg ${gitdir}/hooks/
remote: and then amend the commit:
remote:   git commit --amend --no-edit
remote: Finally, push your changes again
remote:
To ssh://192.168.1.161:29418/demo-repo
 ! [remote rejected] HEAD -> refs/for/master (commit 2bacf9b: missing Change-Id in message footer)
error: failed to push some refs to 'ssh://192.168.1.161:29418/demo-repo'

Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code/demo-repo (master)
$ gitdir=$(git rev-parse --git-dir); scp -p -P 29418 admin@192.168.1.161:hooks/commit-msg ${gitdir}/hooks/
commit-msg                                                                             100% 1790    57.6KB/s   00:00

Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code/demo-repo (master)
$ git commit --amend --no-edit
[master 6103323] this a test
 Date: Fri Jul 15 11:26:21 2022 +0800
 1 file changed, 1 insertion(+)
 create mode 100644 my_test.txt

Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code/demo-repo (master)
$ git push origin HEAD:refs/for/master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 315 bytes | 315.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote:   http://192.168.1.161:8081/c/demo-repo/+/42 this a test [NEW]
remote:
To ssh://192.168.1.161:29418/demo-repo
 * [new reference]   HEAD -> refs/for/master

Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code/demo-repo (master)
$

push 到gerrit后,代码需要审核才能合并到指定分支,参考Gerrit代码审计系统实战-Gerrit 3.0.0版本快速搭建 - 尹正杰 - 博客园

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐