标签: gerrit

Gitcherry-pick:如何重新生成更改ID?

我们将 Git 与 Gerrit 一起使用,并使用 commit hook 为 Gerrit 生成更改 id。现在的问题是,当择优提交时,不会触发提交挂钩,因此不同分支中的不同提交可能存在相同的更改 ID。有什么快速的方法可以让更改 ID 在挑选过程中重新生成吗?

谢谢。

git cherry-pick gerrit

6
推荐指数
1
解决办法
6469
查看次数

ssh - 错误的配置选项:KeyAlgorithms

我已经启动了 gerrit 服务器。当我尝试 ssh 到它时,我得到:

Unable to negotiate with 127.0.0.1 port 29418: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Run Code Online (Sandbox Code Playgroud)

由于此功能已被弃用,因此需要手动启用(http://www.openssh.com/legacy.html):

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 username@localhost -p 29418
Run Code Online (Sandbox Code Playgroud)

这很好用。现在我想要git clone,但需要KexAlgorithms通过 git 将选项传递给 ssh。一种解决方案是将选项添加到~/.ssh/config. 这是我添加的:

Host localhost
    KeyAlgorithms +diffie-hellman-group1-sha1
Run Code Online (Sandbox Code Playgroud)

问题是我收到以下错误:

/home/username/.ssh/config: line 6: Bad configuration option: keyalgorithms
Run Code Online (Sandbox Code Playgroud)

有一个HostKeyAlgorithms选项可以在那里工作,但会抱怨Bad key types '+diffie-hellman-group1-sha1'。我应该如何配置git/ssh连接到gerrit?

git ssh gerrit

6
推荐指数
1
解决办法
2万
查看次数

创建补丁集后修改 gerrit 上的提交消息?

所以我想要做的是:将 url,例如 ( https://gerrit-server/#/c/7456/ ) 添加到 gerrit 上出现的提交消息中。

到目前为止,我尝试过的是创建一个文件patchset-createdgerrit_site/hooks/当我推送更改时会启动它。

问题是我找不到提交消息文件,所以我可以修改它的内容。

我想,因为我试图将 url 插入到提交消息中,所以我无法通过在本地 git 存储库上使用钩子来做到这一点,因为无法知道它将在 gerrit 上关联到哪个 url,所以我认为可以通过在gerrit一侧使用钩子来完成。

将不胜感激任何反馈。

git gerrit

6
推荐指数
2
解决办法
1万
查看次数

git diff 命令排除某些文件夹和文件

我当前正在使用以下 Git diff 命令来获取文件更改列表。我想排除某些文件夹(例如datafiles)和文件(.DSstore)。有没有办法做到这一点?

git diff --no-index /Users/USERNAME/Documents/FWintegration/ingo2/ukon_4355c1 /Users/USERNAME/Documents/FWintegration/ingo2mirror/ingo2mirror
Run Code Online (Sandbox Code Playgroud)

git gerrit

6
推荐指数
1
解决办法
5732
查看次数

如何解决gerrit中已批准审查中的合并冲突?

我对 gerrit 进行了更改,该更改经过代码审查并在 7 次修订后获得批准。但是,现在它无法合并,并且由于合并冲突,尝试在 gerrit 网站中重新设置基准不起作用。如何解决此合并冲突并合并相同的已批准更改而不是创建新更改。(从克隆回购的完整步骤将不胜感激。)

git-merge gerrit merge-conflict-resolution

6
推荐指数
1
解决办法
1万
查看次数

单个 git 存储库的多个用户

我们有一个被多个用户使用的服务器。磁盘空间是一个很大的限制,因为我们的 git repo 非常大,每次有人克隆它时,它都会消耗 130G 的空间。

我知道 git 不是设计为集中式工作流,但这是一种非常特殊的情况。我们考虑过升级硬件,但这是一条很长的路,因为它不是云实例。

我试着摆弄,git worktree但很快就遇到了权限问题。我的理想设置是一个单一的存储库,多个用户可以通过它推送和拉取。

我查看了以前的线程,但不幸的是那里没有可靠的建议,而且它们是很旧的线程。因此,任何新的建议将不胜感激。

git gerrit git-worktree

6
推荐指数
1
解决办法
146
查看次数

git/gerrit阻止开发分支合并到稳定/测试分支

使用Gerrit很容易将不稳定的代码从develop分支合并到stable分支中:

$ git checkout develop
$ commit
$ git push origin HEAD:refs/for/stable

在Gerrit中,提议的更改来自开发分支并且要合并到稳定分支中并不是很清楚.有没有办法防止这种合并发生,无论是在git还是在Gerrit?

更新: 现在我们使用自定义命令推送到gerrit,它找到它所基于的最后一个分支,并且只允许推送到该分支.

git merge branch gerrit

5
推荐指数
1
解决办法
1252
查看次数

如何禁用直接推送到Gerrit?

在与Gerrit合作时,预期的push是:

git push origin HEAD:refs/for/branch
Run Code Online (Sandbox Code Playgroud)

但是一些坏人似乎以一种简单的方式做到了这一点(他们从一些Git手册中学到了):

git push origin
Run Code Online (Sandbox Code Playgroud)

要么

git push
Run Code Online (Sandbox Code Playgroud)

这些操作会导致严重的问题:

  • 提交直接合并到远程服务器中的master(或某个默认)分支.
  • 虽然这些人写了一些提交消息,但是git log找不到它们.
  • 也许更多...

有没有办法push在Gerrit设置中禁用这些操作?或者在客户端禁用它?

git gerrit

5
推荐指数
1
解决办法
5271
查看次数

为什么"git clone"不接受refspec?

似乎很多人已经git clone用组合替换了git init && git fetch.这看起来相当愚蠢,不幸的是像詹金斯这样的工具不会为你做那件事.那么为什么git clone不采用refspec,就像git fetch一样呢?

具体来说,如果您希望在Jenkins上运行gerrit触发的构建任务,则需要确保工作区存在,否则jenkins将无法签出包含gerrit更改的修订.这是因为gerrit使用的ref路径不属于git clone提取的路径.

git gerrit jenkins

5
推荐指数
2
解决办法
3010
查看次数

通过跟踪分支向Gerrit"git push"

推动对Gerrit的更改需要相当深奥的命令

git push origin HEAD:refs/for/branchname

我们编写了这个脚本,但我正在寻找一种本地化的方法.使用git强大的配置,看起来我可以预先配置它的大部分[1],这样就git push足够了......差不多.我坚持参考remote.<name>.pushrefspec.

我已经可以创建一个跟踪主题分支,以便git pull(没有其他参数)将更改从上游远程转移到我的主题分支.但是对于Gerrit,push和fetch引用refspecs是不一样的:一个从中获取(合并)refs/heads/trackbranch,但是一个推送到refs/for/trackbranch[2]

我可以配置pushrefspec remote.<name>.push,但语法非常基本:如果我放 push = refs/heads/*:refs/for/*

然后,这将尝试推动我的t-foo主题分支refs/for/t-foo.但是git有t-foo跟踪的信息trackbranch.我可以定义一个refspec,以便git自动尝试将任何内容推t-foo送到它refs/for/trackbranch吗?

我们目前正在使用脚本来执行此操作,我想我可以为每个主题分支定义推送refspec(可能通过更多脚本).我希望有一种本地的git方式,这样我们就不需要为我们的团队依赖更多的自定义内部脚本了.

[1]通过git checkout origin/upstream_branch -b topic_branch在现有分支中定义跟踪分支git branch --set-upstream-to origin/upstream_branch

[2]推动refs/for/*创建变更集以供审核.有了适当的权限,人们可以推动refs/heads/*绕过审查,但这否定了Gerrit的大部分观点.

git push gerrit refspec

5
推荐指数
1
解决办法
1021
查看次数