J'ai remarqué que Pour repasser, j'ai écrit une commande personnalisée et configuré git pour utiliser cet outil dans mon git diffotan code> est très lent. Un délai d'environ 1..2 secondes apparaît entre chaque invocation DIFF.
DIFFTOOL code> commande: p>
~ / .GITCONFIG CODE> P>
| Cygwin | Debian | Ubuntu | Method |
| ------ | ------ | ------ | -------- |
| 10.381 | 2.620 | 0.580 | difftool |
| 1.149 | 0.567 | 0.210 | custom |
3 Réponses :
Utiliser certaines des techniques trouvées sur le MSYSGIT GITUB , j'ai réduit cela un peu.
pour chaque fichier dans le diff em>, git-diff totant - assistant code> réenregistre les commandes internes suivantes : P>
12:44:46.941239 git.c:351 trace: built-in: git 'config' 'diff.tool'
12:44:47.359239 git.c:351 trace: built-in: git 'config' 'difftool.bc.cmd'
12:44:47.933239 git.c:351 trace: built-in: git 'config' '--bool' 'mergetool.prompt'
12:44:48.797239 git.c:351 trace: built-in: git 'config' '--bool' 'difftool.prompt'
12:44:49.696239 git.c:351 trace: built-in: git 'config' 'difftool.bc.cmd'
12:44:50.135239 git.c:351 trace: built-in: git 'config' 'difftool.bc.path'
12:44:50.422239 git.c:351 trace: built-in: git 'config' 'mergetool.bc.path'
12:44:51.060239 git.c:351 trace: built-in: git 'config' 'difftool.bc.cmd'
12:44:51.452239 git.c:351 trace: built-in: git 'config' 'difftool.bc.cmd'
(ODB: Base de données d'objets) P> Ensey dans des opérations telles que Ce correctif gère N = 2 et N = 3 cas et copie simplement les données plutôt que de répéter le rempliss_tree_descriptor (). P>
blockQuote> sur le repo Windows (arbres 500K, 3,1 millions de fichiers, indice de 450 Mo), cela a réduit la durée totale de 0,75 seconde lors du cyclage entre 2 comme une seule différence de fichier. P>
blockQuote> git diffuttoques code> devrait être légèrement plus rapide avec GIT 2.13 (Q2 2017)
Voir COMMIT DE12A8CF (14 avril 2017) par Jeff Hostlertler ( Jeffhostler code>)
.
(fusionné par Junio C Hamano - Gitster code> -
dans COMMIT 8868BA1 , 24 avr. 2017) sup>
Déball-arbres Code>: Évitez les recherches ODB en double en double lors de la caisse h2>
blockQuote>
Traverse_trees_Recursive () Code> Pour ne pas faire des recherches ODB redondantes lorsque les deux répertoires se réfèrent au même OID. P>
listre-arbores code> et
caisse code>, il y aura probablement de nombreux répertoires pairs ayant le même OID lorsque les différences entre les commentations sont relativement petites. < BR>
Dans ces cas, nous pouvons éviter de frapper plusieurs fois les ODB pour le même OID. P>
Après enquête, j'ai la preuve que la mauvaise performance devait faire avec les fichiers appartenant à un utilisateur d'un autre domaine. Plus précisément, je suis arrivé aux conclusions suivantes:
Je dois supposer que l'obtention d'autorisations de fichiers pour les utilisateurs dans d'autres domaines est lent, et pour une raison pas mises en cache (il était toujours le même utilisateur). P>
Le reste de l'article ci-dessous est ce que je initialement posté. Je laisse reposer. P>
Pour moi (travailler dans une grande entreprise avec de multiples domaines Windows distribués géographiquement) le coupable est que Cygwin utilise Windows acl par défaut. Considérez cette demande pour tous les utilisateurs connus dans le domaine: p>
none / cygdrive binary,posix=0,user,noacl 0 0
Nice commentaires, plus précis que ma réponse. +1
Salut. Je suis confronté au même problème. Avez-vous déjà reçu une réponse sur laquelle Git Diftool est si lent?
Non, je n'ai pas encore trouvé de solution.
Salut. Je pensais que vous pourriez être intéressé par le fait que cette question ait été corrigée dans GIT 2.8.1 pour Windows. S'il vous plaît voir Github.com/git-for-windows/git/issues/711 < / a>.
Je vois exactement le même comportement dans Mingw64 avec Git 2.8.1. En outre, @Jeyoung le problème que vous avez lié est pour l'intégration VIM. Différent problème, peut-être?