我怎样才能debugginggit / git-shell相关的问题?

我怎样才能有一些关于git / git-shell的debugging信息?

我有一个问题,该user1可以克隆一个存储库没有问题,而用户2只能克隆一个空的。 我已经设置了GIT_TRACE=1 ,但没有任何有用的被告知。

最后经过漫长的反复试验,certificate这是一个文件的权限问题。 一个适当的错误消息可能会将此问题短路。

对于更详细的输出使用以下内容:

GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master

试试这个:

 GIT_TRACE=1 git pull origin master 

如果它通过SSH,您可以使用以下内容:

对于types为-vv的更高debugging级别或对于debugging级别2和-3分别为-vvv的debugging级别:

 # Debug level 1 GIT_SSH_COMMAND="ssh -v" git clone <repositoryurl> # Debug level 2 GIT_SSH_COMMAND="ssh -vv" git clone <repositoryurl> # Debug level 3 GIT_SSH_COMMAND="ssh -vvv" git clone <repositoryurl> 

这对于处理服务器的公钥和私钥问题是非常有用的。 你可以使用这个命令来执行任何git命令,而不仅仅是'git clone'。

debugging

Git有一个相当完整的跟踪embedded,你可以用它来debugging你的git问题。

要打开它们,您可以定义以下variables:

  • GIT_TRACE用于一般痕迹,
  • GIT_TRACE_PACK_ACCESS用于跟踪packfile访问,
  • GIT_TRACE_PACKET用于networking操作的数据包级跟踪,
  • GIT_TRACE_PERFORMANCE用于logging性能数据,
  • GIT_TRACE_SETUP了解有关发现与其交互的存储库和环境的信息,
  • GIT_MERGE_VERBOSITY用于debuggingrecursion合并策略(值:0-5),
  • GIT_CURL_VERBOSElogging所有curl消息(相当于curl -v ),
  • GIT_TRACE_SHALLOW用于debugging浅存储库的获取/克隆。

可能的值可以包括:

  • true12写入stderr,
  • /开始的跟踪输出到指定文件的绝对path。

有关更多详细信息,请参阅: Git内部结构 – 环境variables


SSH

对于SSH问题,请尝试以下命令:

 echo 'ssh -vvv $*' > ssh && chmod +x ssh GIT_SSH="$PWD/ssh" git pull origin master 

或使用ssh来validation您的凭据,例如

 ssh -vvvT git@github.com 

或通过HTTPS端口:

 ssh -vvvT -p 443 git@ssh.github.com 

注:减less-v数量以减less详细程度。


例子

 $ GIT_TRACE=1 git status 20:11:39.565701 git.c:350 trace: built-in: git 'status' $ GIT_TRACE_PERFORMANCE=$PWD/gc.log git gc Counting objects: 143760, done. ... $ head gc.log 20:12:37.214410 trace.c:420 performance: 0.090286000 s: git command: 'git' 'pack-refs' '--all' '--prune' 20:12:37.378101 trace.c:420 performance: 0.156971000 s: git command: 'git' 'reflog' 'expire' '--all' ... $ GIT_TRACE_PACKET=true git pull origin master 20:16:53.062183 pkt-line.c:80 packet: fetch< 93eb028c6b2f8b1d694d1173a4ddf32b48e371ce HEAD\0multi_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag multi_ack_detailed symref=HEAD:refs/heads/master agent=git/2:2.6.5~update-ref-initial-update-1494-g76b680d ... 

Git 2.9.x / 2.10(Q3 2016)增加了另一个debugging选项: GIT_TRACE_CURL

见Elia Pinto( devzero2000 ) 提交73e57aa , 提交74c682d (2016年5月23日) 。
帮助: tboegitboegi ) ,Ramsay Jones, Junio C gitstergitster ) , Eric Sunshine( sunshineco )和Jeff King( peff ) 。
(由Junio C gitster合并- gitster – in commit 2f84df2 ,2016年7月6日)

http.c :实现GIT_TRACE_CURL环境variables

实现GIT_TRACE_CURL环境variables以允许更大程度的GIT_CURL_VERBOSE细节,特别是完整的传输头和所有的数据有效载荷交换。
如果某个特定的情况需要更彻底的debugging分析,这可能会很有用。

该文件将陈述:

 GIT_TRACE_CURL 

启用git传输协议的所有传入和传出数据(包括描述性信息)的curl完全跟踪转储。
这与在命令行上执行curl --trace-ascii类似。

此选项将覆盖设置GIT_CURL_VERBOSE环境variables。


你可以看到在这个答案中使用了新的选项,而且在Git 2.11(2016年第四季度)testing中:

请参阅Elia Pinto( devzero2000 )的 提交14e2411 , 提交81590bf , 提交4527aa1 , 提交4eee6c6 (2016年9月7日) 。
(由Junio C gitstergitster -在930b67e ,9月12日提交 )

使用新的GIT_TRACE_CURL环境variables而不是弃用的 GIT_CURL_VERBOSE

 GIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git 

你有没有尝试添加冗长的( -v )运营商,当你克隆?

git clone -v git://git.kernel.org/pub/scm/.../linux-2.6 my2.6