3

我对 git 很陌生,目前正在尝试在 opensuse 上使用 gitolite 和 trac 设置环境。

我设法使用来自http://john.albin.net/git/git-svn-migrate的脚本迁移了一个旧的 svn 存储库。

现在我被 trac/git-integration 困住了,因为 git-receive-pack 命令没有按预期运行。

执行以下命令时,它在打印 0000 后挂起,我必须按 CTRL+C 才能返回。

$ git-receive-pack .
0072c0b863c86da4bb75caa8cb5b6cd46604096b84e9 refs/heads/master report-status delete-refs side-band-64k ofs-delta
0046c0b863c86da4bb75caa8cb5b6cd46604096b84e9 refs/remotes/origin/HEAD
0048c0b863c86da4bb75caa8cb5b6cd46604096b84e9 refs/remotes/origin/master
0000

我尝试在新迁移的存储库、gitolite 管理存储库和我的 Windows 客户端上的本地克隆上使用 cygwin 上的 git 执行命令。在所有情况下,我都坚持上述行为。

receive-pack 返回一些可能正确的行,然后是 0000 并挂起。

有谁知道这里发生了什么?

所有关于 git-receive-pack 的评论都集中在证书或路径错误上——它们都可以正常工作或不能正常工作。但在我的情况下,它返回几行并停止???

我为什么要问这个?

我的 trac 安装返回以下错误:

Trac[git_fs] ERROR: GitError: Could not retrieve GIT version (tried to execute/parse '/usr/bin/git-receive-pack --version' but got ValueError('need more than 0 values to unpack',))

克隆,拉和推似乎有效,但我在 svn 的标签名称中出现另一个错误,导致 svn-to-git-migration 后 gitolite 出现问题。所以我认为git可能还有另一个问题。

4

2 回答 2

1

手册页所述

由远程端提供的信息调用git send-pack并更新存储库。

最终用户通常不直接调用此命令
该协议的 UI 在 git send-pack 端,程序对用于将更新推送到远程存储库

所以不要花太多时间测试那个命令。检查您是否可以克隆/推送/拉取您的存储库。

于 2012-08-29T20:43:19.697 回答
0

你的研究把你引向了错误的方向。问题在于 openSUSE 如何构建和安装 Git,以及它链接可执行文件的方式 - 只需遵循以下链:

  1. /usr/bin/git -> ../lib/git/git-add
  2. /usr/lib/git/git-add -> git
  3. /usr/lib/git/git -> ../../bin/git-receive-pack

正如 Trac 最初制作的[git] git_bin那样PathOption,Trac 实际上会解析包含链接的路径并实际执行/usr/bin/git-receive-pack --version。问题当然是git-receive-pack不支持--version论点,因此失败了。

这在最近的 Trac 版本中已更改,请参阅http://trac.edgewall.org/ticket/10997

为旧版 Trac 和插件版本修复它的补丁是微不足道的 ( PathOption-> Option)。

于 2013-03-18T14:22:42.567 回答