web-dev-qa-db-fra.com

Eclipse et EGit: comment revoir facilement les modifications apportées à TOUS les fichiers modifiés avant de valider le référentiel * local *

J'utilise Eclipse Indigo SR2 avec le plugin EGit (intégré) v.1.3.0.201202151440-r et je n'ai pas trouvé de moyen de revoir facilement toutes mes modifications avant de faire un commit.

J'ai utilisé Eclipse avec SVN pendant des années, et c'était toujours très facile à faire. Je fais généralement un clic droit sur mon projet, sélectionnez Team->Synchronize, double-cliquez sur le premier fichier modifié (dans la perspective Team Sync), puis appuyez sur Ctrl-. à plusieurs reprises pour revoir toutes les modifications dans un fichier, puis passer au fichier suivant, alors que j'écrivais un résumé de mes modifications pour le message de validation.

Mais bien sûr, git est très différent de Subversion, et donc mon flux de travail doit changer. Avec EGit, "Team Sync" ne semble être utile que pour examiner les modifications entre mes fichiers locaux et le référentiel distant (c'est-à-dire avant un push vers la télécommande). J'ai besoin d'un moyen de revoir les modifications depuis mon dernier commit dans mon local repository. En général, je ne me soucie même pas de (re) revoir les modifications avant un Push to remote (et si je le faisais, je préférerais un simple équivalent de git log pour voir ce que je suis sur le point de pousser).

Si je clique avec le bouton droit sur mon projet et sélectionne Team->Commit, On me présente une fenêtre qui fait presque tout ce que je dois faire (sélectionner les fichiers à mettre en scène, valider, écrire un message de validation, modifier une validation précédente, etc.). Ce que pas me permet de faire est de revoir rapidement et facilement toutes mes modifications dans un éditeur de comparaison. Je ne peux pas croire que cette capacité n'existe pas! Il semble que je doive double-cliquer sur chaque fichier individuel, revoir les modifications, fermer l'éditeur de comparaison et double-cliquer sur le fichier suivant. C'est ridicule!

TL/DR - Je recherche un équivalent GUI simple (dans Eclipse) pour faire ce que je peux facilement faire depuis la ligne de commande en utilisant git vimdiff (où vimdiff est un alias git qui utilise vimdiff comme "difftool" pour parcourir tous les fichiers modifiés) suivi de git commit (avec peut-être un git add ou deux entre les deux).

Si personne n'a de bonne solution, je suis curieux de savoir comment les autres gèrent leur workflow de validation avec EGit. Je m'entends bien en commettant depuis la ligne de commande (pas qu'Eclipse en soit content) mais je n'arrive pas à croire qu'EGit soit aussi presque inutile qu'il me semble. Peut-être que mon google-fu n'est pas aussi solide qu'il l'était autrefois?

41
Lambart

Connaissez-vous la vue "Git Staging"? Il garde une trace de tous les fichiers qui ont été modifiés et vous pouvez consulter les changements à tout moment. (Cela peut être un peu mieux que d'utiliser la boîte de dialogue de validation)

Une alternative consiste à valider toutes les modifications sans les réviser, puis à utiliser la vue historique pour comparer deux validations (sélectionnez simplement le dernier plus grand nombre de validations, cliquez avec le bouton droit et sélectionnez 'Comparer les unes aux autres'). De cette façon, vous n'avez pas à continuer de double-cliquer sur des fichiers individuels. Si vous devez changer quelque chose, vous pouvez toujours "modifier" le dernier commit. (J'ai l'habitude de suivre cette approche)

26
Deepak Azad

Dit ici que vous pouvez voir les différences entre l'arbre de travail et toute référence donnée. Vous devriez peut-être essayer la dernière version (Juno) d'Eclipse/EGit et voir si elle s'est améliorée?

Mise à jour: J'ai essayé cela dans le dernier Eclipse, et pour autant que je puisse voir, cela fonctionne bien. Voici comment:

Au moment d'écrire ces lignes, Eclipse Juno 4.2 est la version que vous devriez choisir. Sur la page de téléchargement, vous pouvez choisir entre plusieurs packages selon vos besoins. 'Eclipse IDE for Java Developers' est fourni avec EGit, mais vous pouvez également installer EGit dans n'importe quelle distribution à l'aide d'Eclipse Marketplace (dans le menu Aide) .

  • Une fois que vous avez importé votre projet dans Eclipse, assurez-vous que le projet est "partagé":

Cliquez avec le bouton droit sur le projet -> Équipe -> Partager le projet .. -> Git

Maintenant, procédez comme suit:

  • Basculez vers la perspective de synchronisation d'équipe.
  • Cliquez sur le petit bouton de synchronisation dans la vue de synchronisation.
  • Choisissez Git
  • Choisissez une branche appropriée pour la synchronisation, comme refs/remotes/Origin/master
  • Assurez-vous de cocher la case "Inclure les modifications locales non validées en comparaison"
  • Cliquez sur Terminer

Maintenant, modifiez certains fichiers et regardez-les apparaître dans la vue de synchronisation. Double-cliquez sur les fichiers modifiés pour voir le diff (comme dans la capture d'écran ci-dessous).

Screenshot of Eclipse Juno - EGit Synchronize View

40

J'écris ceci à partir d'Eclipse Oxygen, mais cela devrait également s'appliquer à d'autres versions.

  1. Option 1 avec vue de synchronisation d'équipe: cliquez avec le bouton droit sur le projet> Comparer avec> Valider. Vous pouvez choisir votre dernier commit ici, même si vous ne l'avez pas poussé vers le référentiel.
  2. Option 2 avec vue diff: Si vous voulez voir la version "diff" sans vous engager, vous pouvez y parvenir en en cliquant avec le bouton droit sur votre projet> équipe> stashes> Stash Changes> cochez Inclure les fichiers non suivis. Ceci enregistrez toutes vos modifications dans une cachette. Ensuite, vous cliquez avec le bouton droit sur le projet> équipe> stashes> sélectionnez le stash que vous avez enregistré. Vous cliquez sur la flèche verte en haut à droite pour réappliquer toutes vos modifications que vous avez stashées à votre code. Dans la même fenêtre cachée, vous verrez un onglet "Diff" en bas à droite. Cliquez sur l'onglet diff pour afficher vos modifications dans le style de diff en surbrillance rouge/vert. Je souhaite qu'il y ait un moyen de générer une vue diff sans le masquer, mais c'est la seule solution de contournement que j'ai trouvée.
1
Kt Mack