53 outils de développement, toujours à jour — chaque nouvelle version upstream arrive dans apt en quelques heures. Rejoindre le Discord

📅 À partir du , le miroir apt nécessitera un abonnement. Voir les tarifs · 🆓 Il existe un miroir gratuit pour toujours

🔀 Installer le dernier difftastic sur Ubuntu

Un diff structurel qui compare les fichiers par la syntaxe, pas ligne par ligne

Dernière version : 0.70.0 · mis à jour le 2026-08-18
SourceVersion
deb.griffo.io0.70.0 ✅
Ubuntu officiel🚫 non empaqueté
← Retour à l'accueil

Qu'est-ce que difftastic ?

difftastic — la commande s'appelle difft — est un outil de diff structurel. Au lieu de comparer des lignes, il analyse les deux fichiers avec tree-sitter, construit un arbre syntaxique de chaque côté et signale les éléments de syntaxe qui ont réellement changé. Réindenter un bloc, réagencer une liste d'arguments ou déplacer une accolade n'est plus un diff, tandis qu'une variable renommée au milieu de code reformaté ressort immédiatement.

🚀 Pourquoi les dernières versions comptent : difftastic comprend votre code grâce aux grammaires tree-sitter, livrées avec chaque version. Une compilation d'il y a un an analyse les langages de l'an dernier : la syntaxe récente devient des erreurs d'analyse, et un fichier qui en accumule trop retombe silencieusement sur un diff ligne à ligne — précisément ce que vous vouliez éviter. Chaque version améliore aussi l'algorithme et la mémoire sur les gros fichiers.

⚡ Fonctionnalités clés de difftastic

🌳 Diffs conscients de la syntaxe

Les deux côtés sont analysés en arbres syntaxiques et comparés comme des structures : le bruit de mise en forme disparaît, les vrais changements ressortent.

🧩 Plus de 30 langages

Rust, Python, TypeScript, Go, C, C++, Java, Ruby, YAML, JSON, HTML, CSS, Markdown et bien d'autres — difft --list-languages affiche la liste complète avec les extensions.

🪟 Côte à côte ou en ligne

--display choisit side-by-side, side-by-side-show-both, inline ou du JSON exploitable par un programme.

🔗 Remplacement direct pour Git

S'utilise comme commande de diff externe pour git, mais aussi pour Mercurial, Jujutsu et Fossil.

🚦 Repli honnête

Extension inconnue, fichier énorme ou trop d'erreurs d'analyse : repli sur un diff ligne à ligne avec surlignage par mots plutôt qu'un échec.

🗂️ Répertoires et conflits

Comparez deux répertoires en une commande, ou donnez-lui un fichier plein de marqueurs de conflit de fusion et lisez le conflit comme un diff.

🚀 Toujours en avance sur les archives officielles : Debian et Ubuntu figent les versions des paquets à la sortie d'une release — ce dépôt publie les nouvelles versions upstream généralement en quelques heures. Un simple apt upgrade vous maintient à jour.

📦 Installation depuis deb.griffo.io

Exécuter les commandes

Étape 1 : ajouter le dépôt

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update

🆓 Il existe un miroir gratuit pour toujours. deb-free.griffo.io distribue des paquets gratuitement pour toujours — sans compte, sans abonnement, au plus 2 mois derrière l'upstream, correctifs de sécurité immédiats. Il contient aujourd'hui cliamp, Ghostty, lazydocker, Oh My Posh et Zed ; difftastic n'en fait pas partie, le dépôt ci-dessus reste donc le seul moyen de l'installer — demandez-le et il pourra y être ajouté.

Comment fonctionne le miroir gratuit →

Étape 2 : installer difftastic

# Installer le dernier difftastic
sudo apt install difftastic

# Vérifier l'installation
difft --version
# Installer le dernier difftastic
apt install difftastic

# Vérifier l'installation
difft --version

Étape 3 : le brancher sur git

# Comparer deux fichiers directement
difft old.py new.py

# Ou laisser git appeler difftastic pour chaque diff
git config --global diff.external difft

# Le git diff classique reste à une option près
git --no-ext-diff diff

# La page de manuel est fournie dans le paquet
man difft

🎯 Exemples d'utilisation de base

Comparer fichiers et répertoires :

# Deux fichiers, côte à côte
difft before.rs after.rs

# Une seule colonne, plus proche du diff traditionnel
difft --display inline before.ts after.ts

# Deux répertoires, en ignorant les fichiers inchangés
difft old/ new/ --skip-unchanged --sort-paths

# Quels langages cette version comprend-elle ?
difft --list-languages

L'utiliser comme diff de git :

# Ponctuel : difftastic seulement pour ce diff
GIT_EXTERNAL_DIFF=difft git diff

# Des diffs structurels sur tout l'historique
GIT_EXTERNAL_DIFF=difft git log -p --ext-diff

# L'enregistrer comme difftool
git config --global difftool.difftastic.cmd 'difft "$LOCAL" "$REMOTE"'
git difftool --tool difftastic

# Un alias git pour un log structurel
git config --global alias.dlog '!GIT_EXTERNAL_DIFF=difft git log -p --ext-diff'

Régler l'affichage :

# Ignorer les changements qui ne touchent que les commentaires
difft --ignore-comments a.go b.go

# Plus de contexte, et des tabulations de deux espaces
difft --context 5 --tab-width 2 a.py b.py

# Pour les scripts : y a-t-il eu un changement syntaxique ?
difft --check-only --exit-code a.json b.json

# Des valeurs par défaut pour chaque appel, via l'environnement
export DFT_DISPLAY=inline DFT_BACKGROUND=light

🔧 Intégrations avec d'autres outils

difftastic se branche sur les outils qui vous montrent déjà des diffs :

  • git : GIT_EXTERNAL_DIFF, diff.external ou une entrée difftool — avec --ext-diff, cela s'étend à git log -p et git show
  • Jujutsu : définissez-le comme commande de diff dans jj pour des diffs structurels dans un flux compatible Git
  • Mercurial et Fossil : les deux acceptent une commande de diff externe : le même binaire sert tous vos dépôts
  • Variables d'environnement : DFT_DISPLAY, DFT_BACKGROUND, DFT_WIDTH et compagnie fixent vos préférences une fois pour toutes
  • CI et scripts : --check-only avec --exit-code répond « la syntaxe a-t-elle changé ? » sans afficher le diff, et --display json est fait pour être analysé

🚀 Pourquoi choisir deb.griffo.io ?

📊 Comparatif des dépôts :
  • Ubuntu officiel : n'empaquette pas difftastic du tout — un système standard n'a rien à installer
  • cargo install difftastic : à jour, mais c'est une longue compilation avec beaucoup de grammaires tree-sitter, hors d'apt et sans page de manuel
  • Archive upstream : le binaire officiel, à retélécharger à la main à chaque version
  • deb.griffo.io : dernière version avec mises à jour automatiques

📦 Dépôt de construction du paquet

Les paquets Ubuntu sont construits et maintenus automatiquement dans ce dépôt GitHub :

🔗 Paquets associés

Également disponibles sur deb.griffo.io :

🎯 Parfait pour : relire un refactoring qui a déplacé du code, lire le commit d'un formateur sans loucher, distinguer un vrai changement d'API d'une réindentation, et toute base de code où « tout le fichier a changé » est généralement faux.

📦 Dernières versions publiées par ce dépôt

❓ Questions fréquentes

difftastic est-il dans les dépôts officiels de Ubuntu ?

Non, difftastic n'est pas empaqueté dans les archives officielles de Ubuntu. Ce dépôt est actuellement la seule source apt et propose difftastic 0.70.0.

Comment installer le dernier difftastic sur Ubuntu ?

Ajoutez le dépôt deb.griffo.io une seule fois (instructions ci-dessus), puis exécutez : sudo apt install difftastic. Les nouvelles versions arrivent via le sudo apt upgrade habituel.

Les paquets sont-ils signés et comment sont-ils construits ?

Chaque paquet est signé avec la clé GPG du dépôt (EA0F721D231FDD3A0A17B9AC7808B4DD62C41256) et construit à partir des versions upstream dans des dépôts GitHub publics que chacun peut inspecter.

Quelles versions de Ubuntu sont prises en charge ?

Ubuntu 22.04 Jammy, 24.04 Noble, 25.10 Questing et 26.04 Resolute.