git push给git:'repack'不是git命令

时间:2011-02-01 13:23:48

标签: git

将一些提交推送到遥控器会给出一个相当奇怪的消息:

$ GIT_TRACE=2 git push
trace: built-in: git 'push'
trace: run_command: 'ssh' 'gitserver' 'git-receive-pack '\''~/git/test'\'''
trace: run_command: 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset'
trace: exec: 'git' 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset'
trace: built-in: git 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset'
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 598 bytes, done.
Total 6 (delta 3), reused 0 (delta 0)
Auto packing the repository for optimum performance.
git: 'repack' is not a git command. See 'git --help'.
error: failed to run repack
To gitserver:~/git/test
   ad2b6ed..2a31eea  master -> master

因此无法识别重新包装。 但是在执行git gc时会识别出'repack'

$ GIT_TRACE=2 git gc
trace: built-in: git 'gc'
trace: run_command: 'pack-refs' '--all' '--prune'
trace: exec: 'git' 'pack-refs' '--all' '--prune'
trace: built-in: git 'pack-refs' '--all' '--prune'
trace: run_command: 'reflog' 'expire' '--all'
trace: exec: 'git' 'reflog' 'expire' '--all'
trace: built-in: git 'reflog' 'expire' '--all'
trace: run_command: 'repack' '-d' '-l' '-A'
trace: exec: 'git' 'repack' '-d' '-l' '-A'
trace: exec: 'git-repack' '-d' '-l' '-A'
trace: run_command: 'git-repack' '-d' '-l' '-A'
...

'git gc'之后的'git push'再次出现错误:无法运行重新包装。

$ git --version
git version 1.7.0.4
$ uname -a

Linux lin 2.6.32-28-generic-pae#55-Ubuntu SMP Mon 1月10日22:34:08 UTC 2011 i686 GNU / Linux

推送是不是最佳,还是有问题?

1 个答案:

答案 0 :(得分:3)

错误发生在服务器上而不是客户端上。服务器上安装了什么版本的git? git是使用distros软件包管理器安装在服务器上还是从源代码安装到非标准位置?

服务器是由您管理的吗?也许有人认为他们只能安装git命令的一个子集,因为它只会被用作服务器。