Magit a récemment pris en charge quelque chose comme ça, mais la fonctionnalité est encore un peu approximative et doit être activée explicitement.
Une fonctionnalité similaire existe depuis longtemps - lorsque vous passez d'une validation à une autre dans un tampon de journal et qu'une autre fenêtre dans le même cadre est le tampon de révision du référentiel, ce tampon est actualisé pour afficher cette validation au lieu de la valider. montrait précédemment.
Jusqu'à très récemment, le tampon de révision était créé lorsque vous passiez pour la première fois d'un commit à un autre. J'ai changé ce comportement et maintenant le tampon de révision est seulement mis à jour . Si aucune fenêtre dans le même cadre n'affiche déjà ce tampon, le déplacement dans le journal n'entraînera plus l'affichage du tampon dans une nouvelle fenêtre ou une fenêtre existante qui affichait auparavant un autre tampon.
Alors maintenant, vous devez appuyer SPCune fois pour afficher le tampon de révision. Ce n'est qu'alors qu'il commencera à être mis à jour lorsque vous vous déplacerez dans le tampon de journal.
Si vous ne souhaitez pas que le tampon de révision soit mis à jour, procédez comme suit:
(remove-hook 'magit-section-movement-hook
'magit-log-maybe-update-revision-buffer)
Si, d'autre part, vous souhaitez également que le tampon de révision soit mis à jour lorsque vous vous déplacez dans le tampon d'état, utilisez ceci:
(add-hook 'magit-section-movement-hook
'magit-status-maybe-update-revision-buffer)
Il est désormais possible de mettre à jour automatiquement un tampon blob de la même manière. Ajoutez d'abord ceci:
(add-hook 'magit-section-movement-hook
'magit-log-maybe-update-blob-buffer)
Et peut-être aussi:
(add-hook 'magit-section-movement-hook
'magit-status-maybe-update-blob-buffer)
Ensuite, à l'intérieur d'un tampon de journal (ou d'état), appuyez sur RETpour afficher ou mettre à jour le tampon de révision et pour basculer également sur ce tampon. Accédez au fichier qui vous intéresse et appuyez à RETnouveau sur. Vous êtes maintenant dans un tampon de "visite de blob", qui est similaire à un tampon de visite de fichier, sauf qu'il ne visite pas le fichier dans l'arborescence de travail mais le fichier tel qu'il était dans une validation.
Revenez au tampon de journal (ou d'état) et passez à un autre commit. Le tampon blob est en cours de mise à jour.
Notez que l'affichage d'un autre blob ne réutilise pas réellement le tampon de blob existant. Au lieu de cela, il crée un nouveau tampon qui visite cet objet blob, puis affiche ce tampon dans la fenêtre qui affichait précédemment l'autre tampon blob. Cet autre tampon n'est pas supprimé, ce qui signifie malheureusement que pas mal de tampons peuvent s'accumuler en peu de temps. Ce serait l'un de ces bords rugueux, je l'ai mentionné plus tôt. Appuyer qsur un tampon blob le supprime, vous pouvez donc nettoyer en allant dans la fenêtre qui a été utilisée pour afficher les différents tampons blob et continuer à appuyer qjusqu'à ce que tous les tampons aient été supprimés.
De plus, il est possible de naviguer vers le blob suivant ou précédent à partir d'un tampon de blob à l'aide de pet n. Je suppose que dans la plupart des cas, vous commencez avec un blob récent, puis revenez en arrière vers des blobs plus anciens en utilisant p. Si vous faites cela et que vous souhaitez ensuite vous déplacer dans l'autre sens, je vous recommande d'utiliser qpour tuer le tampon actuel et ainsi passer au tampon précédent , c'est-à-dire au prochain blob.
Notez également que vous n'avez pas besoin de visiter d'abord une révision pour pouvoir visiter un blob. Vous pouvez également utiliser M-x magit-find-file RET <revision> RET <file> RET
directement, mais je trouve cela moins pratique.