- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在本地存储库中有多个独立分支,我想将它们推送到 gitlab 上的新远程存储库。但是当我使用 git push -u origin -all
时,上传单个分支后操作一直失败。我刚刚在 gitlab 上创建了新的存储库,没有更改任何内容或添加任何 Hook 。我可以做任何事情来确保我的所有分支都被推送到远程存储库,因为我经常会推送多个分支。 (分支是独立的,因为这些更改来自不使用 git 的团队成员)
我在 github 上尝试了完全相同的事情,所有分支都被推送了,没有任何问题。
以下是我为 gitlab 运行此命令时得到的输出,
$ git push -u origin --all
Counting objects: 582, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (582/582), done.
Writing objects: 100% (582/582), 210.92 KiB | 2.42 MiB/s, done.
Total 582 (delta 456), reused 0 (delta 0)
remote: Resolving deltas: 100% (456/456), completed with 71 local objects.
error executing git hookerror executing git hookfatal: ref updates aborted by hook
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
最佳答案
这是最近的事(2020 年 8 月),随后是 gitlab-org/gitlab
issue 233964
钩子(Hook)本身由 cmd/gitaly-hooks/hooks.go
触发
但是,GitLab 使用最近的 Git 2.27 并计划 Git 2.28,它面临着 the new reference-transaction
hook (这是 introduced in Git 2.27, June 2020 ):
This hook is invoked by any Git command that performs reference updates.
It executes whenever a reference transaction is prepared, committed or aborted and may thus get called multiple times.
线程添加:
Due to performance concerns, the
reference-transaction
hook is using a cache so it doesn't have to repeatedly find the hook path again.
But in case another hook is getting executed as part of the process, then the cache now points to that second hook instead of the first.
试试看是否使用git push --no-verify -all
会有所帮助,作为临时解决方法。
这导致 gitlab-org/gitlab-git
issue 1144其中 Patrick Steinhardt有sent a fix upstream (meaning to git/git
mailing list) .
In order to not repeatedly search for the
reference-transaction
hook in case it's getting called multiple times, we use a caching mechanism to only callfind_hook()
once.
What was missed though is that the return value offind_hook()
actually comes from astatic strbuf
, which means it will get overwritten when callingfind_hook()
again.
As a result, we may call the wrong hook with parameters of thereference-transaction
hook.This scenario was spotted in the wild when executing a
git-push
with multiple references, where there are interleaving calls to both the update and the reference-transaction hook.
While initial calls to thereference-transaction
hook work as expected, it will stop working after the next invocation of theupdate
hook.
The result is that we now start calling the update hook with parameters and stdin of thereference-transaction
hook.This commit fixes the issue by storing a copy of
find_hook()
's returnvalue in the cache.
OP Zorro Here添加 in the comments :
hopefully GitLab will temporarily fix it from their end
Patrick 还在 MR 2454 中解决了这一点
There's a bug in the reference-transaction implementation in git-corewhich will cause interleaving calls to the
reference-transaction
hook toexecute another hook by accident.While a fix has been proposed upstream, the earliest it may be available is with Git v2.28.1.
So let's remove our reference-transaction hook for now to not expose this brokenbehaviour.I'm disabling this hook in Gitaly so that we can move ahead with the upgrade to Git v2.28.0.
Reverting all the different MRs towards that version would be a major pain.
请注意,关于引用事务 Hook ,Git 2.32(2021 年第二季度)更加明确:
参见 commit 23c781f , commit 5f308a8 (2021 年 3 月 1 日)Patrick Steinhardt ( pks-t
) .
(由 Junio C Hamano -- gitster
-- 合并于 commit 20adca9,2021 年 3 月 22 日)
githooks.txt
: clarify documentation on reference-transaction hookSigned-off-by: Patrick Steinhardt
The reference-transaction hook doesn't clearly document its scope and what values it receives as input.
Document it to make it less surprising and clearly delimit its (current) scope.
githooks
现在包含在其 man page 中:
The hookdoes not cover symbolic references (but that may change in the future).
githooks
现在包含在其 man page 中:
For each reference update that was added to the transaction, the hookreceives on standard input a line of the format:
<old-value> SP <new-value> SP <ref-name> LF
where:
<old-value>
is the old object name passed into the referencetransaction,<new-value>
is the new object name to be stored in theref and<ref-name>
is the full name of the ref.When force updating the reference regardless of its current value or when the reference is to be created anew,
<old-value>
is the all-zeroes object name.
To distinguish these cases, you can inspect the current value of<ref-name>
viagit rev-parse
.
关于gitlab - 推送单个分支后,推送 GitLab 上的所有分支失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63296183/
我正在尝试将多个值放入数组中。 当我使用时: csvData.push('data[0][index],data[1][index],data[2][index],data[3][index]');
我想在数组声明中直接使用函数 push(),但它不能正常工作。在我的示例中,我的数组返回值 2 : var j = ["b"].push("a"); document.write(j); // ret
我编写了以下Powershell,它为所选文件夹中的所有驱动程序创建了一个bat安装程序,然后应重新启动PC。 New-Item C:\Tools\Drivers\DellLatitude3450.b
例: $ git clone git@gitlab:carlos/test.git Cloning into 'asd'... ssh: connect to host gitlab port 22:
我正在构建一个具有数组类型属性的对象数组: 这里是一些简化的代码: var _data = []; for(var i=0;i<10;i++) { var element = {
我有一个简单的 PHP/MySql 应用程序,它通常会选择几个数据库之一(假设每个客户一个)进行操作。但是,经常调用访问公共(public)数据库的实用程序函数。 我不想在我的代码中散布 USE 子句
我在推送 View Controller 时遇到问题。这就是我所做的:单击一个按钮,我使用这段代码添加了一个模态视图,我工作正常: - (void)addAction:(id)sender {
我想为socket can写一个android系统服务器。我目前正在设计这个,想知道是否有任何方法可以在 Linux/POSIX 套接字上的数据是否可用而无需调用 read() 并随时轮询结果的情况下
我正在编写一个 Bootstrap 站点,我想知道这是否可以接受。该网站看起来像我想要的那样,但我想知道这是否是最佳做法? 我采用的方法是对每两个缺失的列使用 1 个偏
删除远程分支是通过: git push origin :master 如果本地在远程之后,则需要完成: git push --force origin :master 但是强制删除例如master 基
假设我有一个 git 服务器。在每次推送时,我都需要启动一个进程,我可以通过一个钩子(Hook)来完成。 需要将进程的标准输出写入执行推送的 git 客户端。这与 Heroku 或 Openshift
我刚刚开始学习 Git,有些事情我无法解决。在我的 Mac 上本地创建和使用 git 存储库后,我可以将副本推送到其他地方的另一台服务器吗?我在防火墙后面,所以不幸的是我无法从另一台机器运行 git
这个问题在这里已经有了答案: warning: remote HEAD refers to nonexistent ref, unable to checkout (13 个答案) 关闭 7 年前。
我已经安装了 SCM Sync 配置插件(0.0.10)来将我的 jenkins 设置保存在我的 git 存储库中。 我已经设置了 git url 存储库但插件没有提交/推送,请看截图 我试过: 私钥
这可能看起来很矛盾,我知道 secret 变更集是私有(private)的,但是如果我想备份这些 secret 变更集怎么办? 我与一些分支并行工作,有时我想插入一个,而不是其他的。为了实现这一点,我
我正在使用 TortoiseHg用于版本控制。提交到本地后,我推送到远程存储库。如何撤消到特定的提交点? 有三个不同的插入,我想恢复到第一个插入。我读到了 Mercurial 回滚和 hg 撤销 命令
我知道以前有人问过这个问题,但我似乎无法理解这件事...... git checkout master git pull git git checkout feature git rebase ori
下面的代码片段中 return { Push:function ..... 的含义是什么?当我用谷歌搜索时,我发现push()方法将新项目添加到数组的末尾,并返回新的长度。所以我不确定什么是push:
我正在使用 Mercurial 1.6。我有一个带有几个子存储库的存储库 (11)。我想将父存储库推送到默认远程存储库,而不推送子存储库。想要这样做的原因包括: 我使用的是 SSH 存储库,需要很长时
我分配了一个按钮来将 segue 推送到另一个 View Controller ,但是当我执行这部分代码时,我得到以下信息: 2014-02-20 10:44:29.357 nar[20244:70b
我是一名优秀的程序员,十分优秀!