gpt4 book ai didi

git/cygwin 静默失败

转载 作者:IT王子 更新时间:2023-10-29 01:05:20 26 4
gpt4 key购买 nike

我在 bitbucket 上有一个个人/私有(private)存储库,我正在尝试克隆它。当我从 Ubuntu 机器克隆时,我能够克隆存储库:

$ git clone https://<user>@bitbucket.org/<user>/<repo>.git
Cloning into '<repo>'...
Password for 'https://<user>@bitbucket.org':
remote: Counting objects: 586, done.
remote: Compressing objects: 100% (519/519), done.
remote: Total 586 (delta 65), reused 583 (delta 65)
Receiving objects: 100% (586/586), 2.55 MiB | 650 KiB/s, done.
Resolving deltas: 100% (65/65), done.

但是,当我从 cygwin 尝试相同的命令时,我得到了一个静默失败:

$ git clone -v --progress https://<user>@bitbucket.org/<user>/<repo>.git
Cloning into <repo>...

然后 git 退出。我花了一个小时试图追踪这个问题,但静默错误很难用谷歌搜索。

我尝试过的事情:

  • 在 cygwin 中重新安装 git
  • 在 cygwin 中降级 git
  • 删除并重建 .gitconfig 文件
  • 回声 $?打印 141(可能与 SIGPIPE 相关?)
  • 设置 GIT_CURL_VERBOSE 没有产生任何附加输出

注意:git版本是1.7.5.1

有没有人知道这里可能发生的事情?

编辑/更新

在找不到问题的解决方案后,我完全重新安装了 cygwin,问题似乎已经消失了。

最佳答案

我遇到了这个问题,对我来说这是一个不可靠的 cygcurl-4.dll 版本我编译并安装到/usr/local/bin。我删除了那个文件,现在 git 可以工作了。

我的修复细节可能与其他人不同,但这就是我进行调试的方式。现在有一个基本版本 strace对于 Cygwin,我不确定它来自哪个包。

为了跟踪子进程的生成(除其他外),我使用了 strace --mask=sigp git clone https://github.com/<user>/<repo>.git .翻看,我发现了这个 block :

--- Process 12224 created
922 5807 [main] git 11849! child_info_spawn::worker: new process name \\?\C:\cygwin64\usr\libexec\git-core\git-remote-https.exe
--- Process 12224 loaded C:\Windows\System32\ntdll.dll at 0000000077830000
25 5832 [main] git 11849! child_info_spawn::worker: spawned windows pid 12224
41 5873 [main] git 11849! child_info::sync: n 2, waiting for subproc_ready(0x188) and child process(0x178)
--- Process 12224 loaded C:\Windows\System32\kernel32.dll at 0000000077610000
--- Process 12224 loaded C:\Windows\System32\KernelBase.dll at 000007fefd870000
--- Process 12224 loaded C:\cygwin64\usr\local\bin\cygcurl-4.dll at 0000000482aa0000
--- Process 12224 loaded C:\cygwin64\bin\cygcrypto-1.0.0.dll at 00000003d5120000
--- Process 12224 loaded C:\cygwin64\bin\cygwin1.dll at 0000000180040000
--- Process 12224 loaded C:\cygwin64\bin\cygz.dll at 00000003b0490000
--- Process 12224 loaded C:\cygwin64\bin\cygrtmp-0.dll at 00000003ac650000
--- Process 12224 loaded C:\cygwin64\bin\cygssl-1.0.0.dll at 00000003ab640000
--- Process 12224 loaded C:\cygwin64\bin\cygssh2-1.dll at 00000003ab6b0000
--- Process 12224, exception c0000139 at 00000000778f8078
--- Process 12224 exited with status 0xc0000139

之后是所有退出清理。因此问题出现在为 /usr/libexec/git-core/git-remote-https.exe 加载 DLL 期间. Cygwin 通常不会告诉您很多关于这些错误的信息,但是如果您“使用 Windows”启动该程序,它会显示一个错误框。

cygstart /usr/libexec/git-core/git-remote-https.exe pop 一个框,上面写着

The procedure entry point curl_global_sslset could not be located
in the dynamic link library cygcurl-4.dll.

使用 cygcheck /usr/libexec/git-core/git-remote-https.exe 检查它试图加载哪些库:

C:\cygwin64\usr\libexec\git-core\git-remote-https.exe
C:\cygwin64\usr\local\bin\cygcurl-4.dll
C:\cygwin64\bin\cygcrypto-1.0.0.dll
C:\cygwin64\bin\cygwin1.dll
C:\Windows\system32\KERNEL32.dll
C:\Windows\system32\ntdll.dll
C:\Windows\system32\KERNELBASE.dll

(... many more Windows 7 DLLs ...)

C:\cygwin64\bin\cygz.dll
C:\cygwin64\bin\cygrtmp-0.dll
C:\cygwin64\bin\cygssl-1.0.0.dll
C:\cygwin64\bin\cygssh2-1.dll
C:\cygwin64\bin\cygiconv-2.dll
C:\cygwin64\bin\cygintl-8.dll

所以手动安装C:\cygwin64\usr\local\bin\cygcurl-4.dll是一个很有可能的候选人,删除它解决了我的问题。

关于git/cygwin 静默失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15176526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com