Git: не может толкать вновь клонированные репо - PullRequest
4 голосов
/ 14 марта 2012

У меня новый рабочий стол под управлением Ubuntu. Я перенес кучу git-репозиториев со своего предыдущего компьютера на новый. Я могу толкать и тянуть все это без проблем. Однако, если я сделаю git clone в новом хранилище (мы используем gitolite и gitflow), любой git push зависнет. Даже если я смогу успешно запустить rsynced-проект, выполнение git clone проекта из gitolite будет успешным, но в результате я получу проект, который я не смогу протолкнуть. Файлы .git/config идентичны.

Мой компьютер:

$ uname -a
Linux ovid-desktop 3.0.0-16-generic #29-Ubuntu SMP Tue Feb 14 12:48:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

Вывод Git Push (или чтение вывода Strace ):

GIT_TRACE=1 git push -vv origin users/ovid
trace: built-in: git 'push' '-vv' 'origin' 'users/ovid'
Pushing to gitolite:libs/perl/ThirdParty-Sync
trace: run_command: 'ssh' 'gitolite' 'git-receive-pack '\''libs/perl/ThirdParty-Sync'\'''
trace: run_command: 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
trace: exec: 'git' 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
trace: built-in: git 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
Counting objects: 53, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (21/21), done.
Writing objects: 100% (28/28), 2.59 KiB, done.
Total 28 (delta 13), reused 0 (delta 0)

И он висит навсегда после Total 28 (delta... строки.

Успешная загрузка из того же проекта, но из каталога rsynced, выглядит следующим образом:

To gitolite:libs/perl/ThirdParty-Sync                                                                                                                 
   8c056a5..0321b35  users/ovid -> users/ovid

Единственный симптом (красная сельдь?), О котором я могу подумать, может быть связан с этим:

$ ssh gitolite
PTY allocation request failed on channel 0

Мне нужно добавить -T, чтобы это работало.

Опять же, я могу успешно нажать, если я нахожусь в каталоге rsynced ThirdPart-Sync. Только если я попытаюсь снова клонировать этот проект с сервера gitolite, он потерпит неудачу.

Обновление : Оказывается, оно не зависает вечно. Через некоторое время после строки Total 28 я получаю следующее:

Write failed: Broken pipe
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly

Обновление Запуск strace не говорит мне, что происходит. На репо я не могу нажать:

wait4(4122, Counting objects: 53, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (18/18), done.
Writing objects: 100% (28/28), 11.62 KiB, done.
    Total 28 (delta 3), reused 28 (delta 3)
[{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 4122
--- SIGCHLD (Child exited) @ 0 (0) ---
read(3, 

Запуск стриса на репо, я банка толчок дает мне это примерно с того же места:

write(9, "^0321b3501969dead78a83a0d3234724"..., 42) = 42
write(9, "b9cbbc6cc37100baf706746205e7a4c4"..., 41) = 41
close(9)                                = 0
wait4(4632, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 4632
--- SIGCHLD (Child exited) @ 0 (0) ---
read(6, "000e", 4)                      = 4
read(6, "unpack ok\n", 10)              = 10
read(6, "001d", 4)                      = 4
read(6, "ok refs/heads/users/ovid\n", 25) = 25
read(6, "0000", 4)                      = 4
futex(0x7f8a49c619d0, FUTEX_WAIT, 4631, NULL) = 0

Ответы [ 4 ]

3 голосов
/ 14 марта 2012

ОП Овидия указана в комментарии

VonC: После большого ада я переключился с ключа dsa ssh на ключ rsa ssh , и все стало работать.

В документации Gitolite " как gitolite использует ssh " упоминаются только ключи rsa .
Так что, кажется, безопасно продолжать использовать именно этот ключ.

Утилита check (в комплекте с гитоитом) sshkeys-lint только разбор для rsa (или dss)

1 голос
/ 14 марта 2012

Попробуйте выполнить следующие действия:

   $git pull
   $git push origin branch
1 голос
/ 14 марта 2012

Можете ли вы отправить любое репо в Gitolite? Или только те, которые вы не перебросили?

А как насчет вашего ~ / .gitconfig?

Если бы я был в вашей ситуации, я бы попробовал две вещи:

  • strace, чтобы выяснить, что ожидает git-push / ssh.

  • Используйте SSH ControlMaster / ControlPath в ~ / .ssh / config для создания общего SSH-соединения и попробуйте нажать после запуска ssh -T gitolite.

0 голосов
/ 14 марта 2012

попробуйте сравнить конфиг в новых репозиториях. Значения по умолчанию изменяются между версиями git.

...