edl*_*erd 58 git push unpack gerrit
在将新分支推送到gerrit服务器时,我们遇到以下错误:
de@roma:~/git-hate/www$ git push origin landingpage
Counting objects: 149, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (73/73), done.
Writing objects: 100% (111/111), 2.77 MiB, done.
Total 111 (delta 68), reused 80 (delta 38)
remote: Resolving deltas: 100% (68/68)
error: unpack failed: error Missing tree 30c4809ade0b4b0c81cb7f882450774862b82361
fatal: Unpack error, check server log
To ssh://user@git-server/repository
! [remote rejected] landingpage -> landingpage (n/a (unpacker error))
error: failed to push some refs to 'ssh://user@git-server/repository'
Run Code Online (Sandbox Code Playgroud)
我们尝试将提到的树对象手动复制到远程git,但没有成功.
在gerrit方面,我们得到一个堆栈跟踪:
[2013-05-16 13:43:42,753] ERROR com.google.gerrit.sshd.BaseCommand : Internal server error (user de account 1000000) during git-receive-pack '/repository'
com.google.gerrit.sshd.BaseCommand$Failure: fatal: Unpack error, check server log
at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:157)
at com.google.gerrit.sshd.AbstractGitCommand.service(AbstractGitCommand.java:106)
at com.google.gerrit.sshd.AbstractGitCommand.access$000(AbstractGitCommand.java:34)
at com.google.gerrit.sshd.AbstractGitCommand$1.run(AbstractGitCommand.java:72)
at com.google.gerrit.sshd.BaseCommand$TaskThunk.run(BaseCommand.java:430)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266)
at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:337)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
Caused by: java.io.IOException: Unpack error on project "repository":
AdvertiseRefsHook: org.eclipse.jgit.transport.AdvertiseRefsHookChain@7047125class org.eclipse.jgit.transport.AdvertiseRefsHookChain
at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:156)
... 13 more
Caused by: org.eclipse.jgit.errors.UnpackException: Exception while parsing pack stream
at org.eclipse.jgit.transport.ReceivePack.service(ReceivePack.java:202)
at org.eclipse.jgit.transport.ReceivePack.receive(ReceivePack.java:142)
at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:98)
... 13 more
Caused by: org.eclipse.jgit.errors.MissingObjectException: Missing tree 30c4809ade0b4b0c81cb7f882450774862b82361
at org.eclipse.jgit.transport.BaseReceivePack.checkConnectivity(BaseReceivePack.java:996)
at org.eclipse.jgit.transport.BaseReceivePack.receivePackAndCheckConnectivity(BaseReceivePack.java:756)
at org.eclipse.jgit.transport.ReceivePack.service(ReceivePack.java:167)
... 15 more
Run Code Online (Sandbox Code Playgroud)
伙计们:任何想法该怎么办?
Tas*_*dar 99
与推进--no-thin论证工作对我来说是解决方法:
git push --no-thin omnigerrit HEAD:refs/for/android-4.4
Run Code Online (Sandbox Code Playgroud)
tar*_*dyp 13
你使用的是git> 1.8.4.2吗?
我发现git 1.8.4.3+和gerrit 2.6之间不兼容,因为 https://github.com/git/git/commit/fbd4a7036dfa71ec89e7c441cef1ac9aaa59a315
通过此增强功能,如果git发现树sha1已经存在于服务器中,它将不再发送它,但是gerrit想要搜索与上传包中的提交sha1相关联的树sha1.
看起来我无法使用gerrit 2.8-rc3重现它,而不是最新版本的scm-manager.我会说这已经在jgit中解决了,但还找不到哪个版本.
New*_*one 10
我的情况
我也遇到了这个问题,这需要很长时间来解决这个问题.
首先,我注意到gerrit日志中的一个错误信息:
Internal server error (user newptone account 1) during git-receive-pack '/neutron.git'
com.google.gerrit.sshd.BaseCommand$Failure: fatal: Unpack error, check server log
......
... Missing unknown 613fd2557fba30aff2dbd51c3807cc57561bab08
Run Code Online (Sandbox Code Playgroud)
什么是613fd2557fba30aff2dbd51c3807cc57561bab08对象?
然后我用git review -l来搜索这个项目neutron的所有打开的补丁集:
1974 master Add two interfaces for manipulate forwarding individually
Run Code Online (Sandbox Code Playgroud)
然后我通过搜索在gerrit仪表板中找到这个补丁集,我点击链接,似乎错误:
613fd2557fba30aff2dbd51c3807cc57561bab08 cannot found
Run Code Online (Sandbox Code Playgroud)
啊哈,这就是原因!
但为什么这个对象丢失了?
原因是我的同事告诉我中子项目将使用新的repo来替换旧的,我删除旧的repo但没有关闭所有打开的补丁集中的gerrit.打开的补丁集将在gerrit仪表板中消失,但它仍然存在于gerrit数据库中.
如何解决它
登录您的reviewdb sql并找到此记录:
首先,确保这是我们要修改的那个:
select * from changes where change_id=1974\G;
Run Code Online (Sandbox Code Playgroud)
然后更新此记录:
update changes set open='N',status='A' where change_id=1974;
Run Code Online (Sandbox Code Playgroud)
我刚刚遇到这个错误.
对于我的场景,我试图推送修改后的提交,其中自上次推送相同提交以来没有任何文件发生过更改.我确实修改了改变的提交消息,并试图再次推送.作为提交的一部分的文件没有更改.
我的推送被拒绝,并发布了相同的错误消息.
似乎Gerrit不喜欢推送除了修改后的提交消息之外没有任何更改.
我确实对文件进行了一个字符更改,添加了文件,再次修改了提交,然后推送,并且推送成功.
我正在使用git == 1.8.4.2