7 votes

Comment puis-je déterminer ce qui bloque git sur ma machine OS X ?

J'essaie de faire un git pull sur mon Mac à partir d'un repo local. Le processus est bloqué. Ma question est la suivante : pourquoi est-ce qu'il est bloqué et comment puis-je l'arrêter ? C'est-à-dire que je suis dans un repo où les "remotes" sont sur le système de fichiers local :

rcook@mymachine (paraDIS_lib (master)): git remote -v
origin  /Users/rcook/gitrepos/paraDIS_lib (fetch)
origin  /Users/rcook/gitrepos/paraDIS_lib (push)

Et si je fais un git pull puis il se bloque, il n'y a pas de progression, rien. Il semble être bloqué à faire quelque chose appelé "git-upload-pack" :

rcook@RichCookHomeMac (~ (BARE:master)): psfind git
root            15840     1   0.0  0.0 git              git fetch
rcook           23160 22699   0.0  0.0 git              git pull -v --progress
rcook           23161 23160   0.0  0.0 git              git fetch --update-head-ok -v --progress
rcook           23162 23161   0.0  0.0 git-upload-pack  git-upload-pack /Users/rcook/gitrepos/paraDIS_lib

Et si on l'exécute avec GIT_TRACE, il semble que je sois bloqué sur "git rev-list" :

rcook@RichCookHomeMac (paraDIS_lib.local (master)):    GIT_TRACE=1 git pull
16:51:50.002029 git.c:348               trace: built-in: git 'pull'
16:51:50.002479 run-command.c:335       trace: run_command: 'fetch' '--update-head-ok'
16:51:50.003491 exec_cmd.c:128          trace: exec: 'git' 'fetch' '--update-head-ok'
16:51:50.016960 git.c:348               trace: built-in: git 'fetch' '--update-head-ok'
16:51:50.017949 run-command.c:335       trace: run_command: 'git-upload-pack '\''/Users/rcook/gitrepos/paraDIS_lib'\'''
16:51:50.018872 run-command.c:195       trace: exec: '/bin/sh' '-c' 'git-upload-pack '\''/Users/rcook/gitrepos/paraDIS_lib'\''' 'git-upload-pack '\''/Users/rcook/gitrepos/paraDIS_lib'\'''
16:51:50.038192 run-command.c:335       trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'

En effet, je peux induire un accrochage :

GIT_TRACE=1 git rev-list --objects --stdin --not --all

Tirer depuis le même repo mais depuis une machine distante via ssh fonctionne bien. C'est à dire..,

rcook@rzhasgpu18 (paraDIS_lib (master)): git remote -v
origin  mymachine.net:/Users/rcook/gitrepos/paraDIS_lib (fetch)
origin  mymachine.net:/Users/rcook/gitrepos/paraDIS_lib (push)

Il y a, git pull fonctionne très bien, bien qu'il soit encore très lent.

Ma question est la suivante : la version locale ne devrait-elle pas être beaucoup plus rapide ? Comment puis-je savoir ce qui la ralentit ? Sous linux, je l'exécuterais sous strace, mais sous OS X, il semble que ce soit très difficile à faire, en particulier sous El Capitan avec tous ses trucs de sécurité bizarres.

0voto

Daniel Points 11

Oui, cela m'arrive aussi de temps en temps. Mais tout rentre dans l'ordre une fois que j'ai redémarré ma machine. Il est probable que cela commence à se produire après la mise à jour vers la version 2.7.2 de git.

0voto

Rich Points 1029

Cela ne m'arrive plus. J'obtiens maintenant des mises à jour plus rapides via des remotes pointant vers le système de fichiers comme /Users/rcook/gitrepos/paraDIS_lib qu'en réseau comme mymachine.net:/Users/rcook/gitrepos/paraDIS_lib, ce qui est ce à quoi je m'attendais normalement. J'ai réduit la taille du repo à l'aide de l'outil génial BFG-repo-cleaner l'outil. Mais un index important n'explique pas vraiment pourquoi le réseau était plus rapide que l'accès local... soupir. Je sais que c'est une "réponse" merdique, mais je voulais poursuivre avec les résultats.

-1voto

tarunw Points 1

J'ai créé un nouveau remote basé sur SSH pointant sur le même dépôt. J'ai réessayé avec l'ancien système de fichiers à distance et cela a fonctionné. Je ne sais pas pourquoi cela a fonctionné ainsi.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X