alibaba / git-repo-go

git-repo is a command-line tool for centralized workflow, can work with Gerrit, AGit-Flow compatible servers. It is written in Golang, and it can be installed easily without further dependency. It provides an easy-to-use solution for multiple repositories which is introduced by Android repo first, and it can also work with a single repository.
https://git-repo.info/
Apache License 2.0
262 stars 60 forks source link

在git协议下,当commit里面有lfs时,可以push, 但是pr会报错 #38

Closed junwchina closed 2 years ago

junwchina commented 2 years ago

➜ git-repo-lfs-test git:(master) git pr Uploading LFS objects: 0% (0/1), 0 B | 0 B/s, done.
batch request: invalid character '0' after top-level value error: failed to push some refs to 'codeup.aliyun.com:606bafcd32fceefde379cc0e/git-repo-lfs-test.git'


[FAILED] ./ master (upload failed: exit status 1)

如果是https协议就可以正常pr。

jiangxin commented 2 years ago

使用 git pr -vv 能够复现,应该是 git-lfs 在 SSH 协议认证和推送上的问题。我们团队开发 git-lfs 服务端特性的同学会帮助看下。

$ GIT_TRACE=1 GIT_TRACE_PACKET=1 git pr -vv 
...
09:08:09.111199 git.c:742               trace: exec: git-lfs pre-push ssh git@codeup.aliyun.com:gotgit/gotgit/git-lfs-test.git
09:08:09.111894 run-command.c:668       trace: run_command: git-lfs pre-push ssh git@codeup.aliyun.com:gotgit/gotgit/git-lfs-test.git
09:08:09.125115 trace git-lfs: exec: git 'version'
09:08:09.148006 trace git-lfs: exec: git '-c' 'filter.lfs.smudge=' '-c' 'filter.lfs.clean=' '-c' 'filter.lfs.process=' '-c' 'filter.lfs.required=false' 'rev-parse' 'HEAD' '--symbolic-full-name' 'HEAD'
09:08:09.163391 trace git-lfs: exec: git 'config' '-l'
09:08:09.171766 trace git-lfs: pre-push: refs/heads/jx/ssh-protocol 77adac519753891c0c3d7bffe4ff72ec90dcbcab refs/for/master/jx/ssh-protocol 0000000000000000000000000000000000000000
09:08:09.948407 trace git-lfs: tq: running as batched queue, batch size of 100
09:08:09.948642 trace git-lfs: run_command: git rev-list --objects --ignore-missing --not --remotes=ssh --stdin --
09:08:09.960441 trace git-lfs: tq: sending batch of size 1                                                                                                                               
09:08:09.960687 trace git-lfs: run_command: sh -c ssh -o SendEnv=AGIT_FLOW -- git@codeup.aliyun.com 'git-lfs-authenticate gotgit/gotgit/git-lfs-test.git upload'
09:08:10.567195 trace git-lfs: ssh: git@codeup.aliyun.com failed, error: invalid character '0' after top-level value, message:  (try: 0/6)
09:08:10.567336 trace git-lfs: run_command: sh -c ssh -o SendEnv=AGIT_FLOW -- git@codeup.aliyun.com 'git-lfs-authenticate gotgit/gotgit/git-lfs-test.git upload'
09:08:11.339378 trace git-lfs: ssh: git@codeup.aliyun.com failed, error: invalid character '0' after top-level value, message:  (try: 1/6)
09:08:11.339472 trace git-lfs: run_command: sh -c ssh -o SendEnv=AGIT_FLOW -- git@codeup.aliyun.com 'git-lfs-authenticate gotgit/gotgit/git-lfs-test.git upload'
09:08:12.267201 trace git-lfs: ssh: git@codeup.aliyun.com failed, error: invalid character '0' after top-level value, message:  (try: 2/6)
09:08:12.267309 trace git-lfs: run_command: sh -c ssh -o SendEnv=AGIT_FLOW -- git@codeup.aliyun.com 'git-lfs-authenticate gotgit/gotgit/git-lfs-test.git upload'
09:08:13.059273 trace git-lfs: ssh: git@codeup.aliyun.com failed, error: invalid character '0' after top-level value, message:  (try: 3/6)
09:08:13.059384 trace git-lfs: run_command: sh -c ssh -o SendEnv=AGIT_FLOW -- git@codeup.aliyun.com 'git-lfs-authenticate gotgit/gotgit/git-lfs-test.git upload'
09:08:13.714400 trace git-lfs: ssh: git@codeup.aliyun.com failed, error: invalid character '0' after top-level value, message:  (try: 4/6)
09:08:13.714468 trace git-lfs: run_command: sh -c ssh -o SendEnv=AGIT_FLOW -- git@codeup.aliyun.com 'git-lfs-authenticate gotgit/gotgit/git-lfs-test.git upload'
09:08:14.405591 trace git-lfs: ssh: git@codeup.aliyun.com failed, error: invalid character '0' after top-level value, message:  (try: 5/6)
batch request: invalid character '0' after top-level value
Uploading LFS objects:   0% (0/1), 0 B | 0 B/s, done.
error: failed to push some refs to 'codeup.aliyun.com:gotgit/gotgit/git-lfs-test.git'
09:08:14.408263 pkt-line.c:80           packet:         push> 0000
xzy57369 commented 2 years ago

服务端ssh解析AGIT_FLOW环境变量时有bug,测试后会在下周发布窗口发布,在这之前请使用 http 协议

jiangxin commented 2 years ago

经验证昨天的发布已经解决此问题。感谢 @junwchina 的报告。