Sortie de jj v0.42.0 - système de gestion de versions compatible Git
(github.com/jj-vcs)- Passage à l’allocateur mémoire mimalloc pour améliorer les performances multithread
- Suppression des options de commande obsolètes comme
jj commit --reset-author/--author,jj describe --no-edit/--edit/--reset-author/--author - Suppression des options
jj git push --allow-new,jj metaedit --update-committer-timestamp - Suppression des options de configuration obsolètes comme
git.auto-local-bookmark,git.push-new-bookmarks jj evologne prend plus en charge les prédécesseurs de commits legacy enregistrés avantjj0.30- L’autocomplétion du shell affiche les descriptions des alias personnalisés, revset-alias, template-alias et fileset-alias, et extrait les descriptions depuis le champ
.docdes définitions d’alias sous forme de table jj showaccepte plusieurs révisions et les affiche dans l’ordre, à la manière degit showjj git fetchgénère un historique d’évolution basé sur les change ID et, si le dépôt distant préserve les change ID, rebase les révisions descendantes locales au-dessus des parents réécrits- La commande
jj util backend nameaffiche le nom du backend de commit utilisé par le dépôt actuel - Ajout du paramètre
edit-invocation-modepour l’éditeur de diff : avec"file-by-file", l’éditeur est exécuté une fois par fichier modifié, ce qui permet d’utiliser des outils par fichier commevimdiff jj git remote addsignale désormais une erreur au lieu de paniquer lorsqu’un nom de remote est vide ou contient des espaces- Quand la sortie en couleur est désactivée, le diff color-words affiche l’état before/after sur des lignes séparées, ce qui améliore la lisibilité des diff envoyés dans un pipe ou redirigés
1 commentaires
Avis sur Lobste.rs
Je me demande si, maintenant que
jj git fetchgénère un historique d’évolution basé sur les change IDs, cela signifie qu’on n’a plus besoin de fairejj new mainjuste après chaquejj git fetch, à condition que le remote préserve les change IDsSi c’est le cas, ça ressemble à une amélioration assez appréciable de la qualité de vie
main, donc je ne pense pas que ça aide sur ce pointEn revanche, je ne sais pas ce qu’il en est des commits de merge générés par GitHub qui n’ont pas de change ID
Le point sur le passage à l’allocateur mémoire
mimallocpour améliorer les performances multithread m’intrigue davantageSur des processus de longue durée, j’ai déjà essayé des choses comme
jemallocpour limiter la fragmentation, maisjjdonne plutôt l’impression de démarrer en 1 ms et de se terminer en moins de 10 ms, donc c’est surprenant qu’un changement d’allocateur soit perceptibleEn creusant un peu, j’ai trouvé la PR https://github.com/jj-vcs/jj/pull/9484 et à peu près seulement https://github.com/jj-vcs/jj/issues/2490#issuecomment-2595323515, mais ça ne ressemble pas à un énorme gain de vitesse. Cela dit, si c’est plus rapide et que le changement tient en quelques lignes, c’est très bien
Il était écrit « si le remote préserve les change IDs », mais je ne sais pas dans quelle mesure les remotes les préservent en général
Je sais que
jj gerrit uploadajoute un footer de change ID, mais unjj git pushclassique ne le fait pasEn revanche, les opérations qui réécrivent les commits, comme le squash merge de GitHub ou un rebase merge, ne les préservent pas. Avec les outils standard basés sur
libgit2, les en-têtes personnalisés ne sont pas conservés, tandis que certains outils comme la bibliothèque Rust utilisée par GitButler prennent en charge la conservation des en-têtes personnalisés, mais je doute que les forges utilisent ce genre d’outilsJe ne sais même pas comment vérifier qu’ils sont bien préservés
La documentation donne plus de détails
GitHub les préserve aussi ; on peut le voir dans les commits pushcx du code source de lobsters ou dans mes commits
Je me demande s’il existe une bonne ressource à lire ou à regarder sur les raisons d’utiliser jj plutôt que Git standard
Je sais que jj peut fonctionner au-dessus de Git, et j’ai aussi fait quelques essais sur des projets perso, mais je n’arrive toujours pas à trouver l’argument vraiment décisif sur pourquoi ce serait meilleur ou plus simple