Il existe de nombreux programmes qui peuvent créer un correctif de différence, mais j'ai beaucoup de mal à en appliquer un. J'essaie de distribuer un correctif et j'ai reçu une question d'un utilisateur sur la façon de l'appliquer. J'ai donc essayé de le comprendre par moi-même et j'ai découvert que je n'en avais aucune idée, et la plupart des outils que je peux trouver sont en ligne de commande. (Je peux gérer une ligne de commande, mais beaucoup de gens seraient perdus sans une interface graphique agréable et conviviale. Donc, ce n'est pas bon à cette fin.)
J'ai essayé d'utiliser TortoiseSVN. J'ai le patch que je souhaite appliquer. Je fais un clic droit sur le patch, et il y a une option sous le sous-menu TortoiseSVN qui dit «Appliquer le patch». Tout ce qu'il fait, c'est ouvrir une fenêtre vide.
Alors j'ai essayé de frapper Open. Il a deux options: fusionner et appliquer un diff unifié. (Le correctif est au format diff unifié, heureusement.) Mais l'option Apply ne fonctionne tout simplement pas: elle demande le correctif et un dossier. D'une manière ou d'une autre, il a oublié de demander le fichier auquel appliquer le correctif! Donc TortoiseSVN ne fonctionne tout simplement pas. Existe-t-il un utilitaire basé sur l'interface graphique Windows qui prendra un correctif et un fichier et les appliquera correctement?
EDIT: En regardant les réponses jusqu'à présent, il semble que Tortoise ne le fera correctement que si c'est un fichier déjà versionné. Ce n'est pas le cas ici. J'ai besoin de pouvoir appliquer un correctif à un fichier qui n'est pas sorti d'un référentiel SVN. J'ai juste essayé d'utiliser Tortoise, car je sais que SVN utilise des différences et doit savoir à la fois les créer et les appliquer.
Réponses:
Appliquer le patch
Avec TortoiseMerge:
Screeny alternative si vous ouvrez à partir de TortoiseMerge. Dans l'écran ci-dessous, le répertoire fait référence au répertoire "fusion" mentionné à l'étape 2 ci-dessus:
Capture d'écran de l'interface graphique WinMerge:
la source
J'ai créé un outil Python pur juste pour ça. Il a un comportement multiplateforme prévisible. Bien qu'il ne crée pas de nouveaux fichiers (au moment de l'écriture de ceci) et qu'il ne dispose pas d'une interface graphique, il peut être utilisé comme bibliothèque pour créer un outil graphique.
MISE À JOUR : Il devrait être plus pratique de l'utiliser si Python est installé.
la source
TortueMerge est un utilitaire séparé fourni avec TortoiseSVN.
Il peut également être téléchargé séparément dans l' archive TortoiseDiff.zip . Cela vous permettra d'appliquer des différences unifiées aux fichiers sans version.
la source
Je sais que vous avez dit que vous préféreriez une interface graphique, mais les outils en ligne de commande feront bien le travail. Voir GnuWin pour un portage des outils Unix vers Windows. Vous auriez besoin de la commande patch, évidemment ;-)
Cependant, vous pourriez rencontrer un problème avec la terminaison de la ligne. Le port GnuWin supposera que le patchfile a une terminaison de ligne de style DOS (CR / LF). Essayez d'ouvrir le patchfile dans un éditeur raisonnablement intelligent et il le convertira pour vous.
la source
Dans TortoiseSVN, l'application de patch fonctionne. Vous devez appliquer le correctif dans le même répertoire qu'il a été créé à partir de . Il est toujours important de garder cela à l'esprit. Alors, voici comment procéder dans TortoiseSVN:
Cliquez avec le bouton droit sur le dossier auquel vous souhaitez appliquer le patch. Il présentera une boîte de dialogue demandant l'emplacement du fichier de correctif. Sélectionnez le fichier et cela devrait ouvrir une petite fenêtre de liste de fichiers qui répertorie les fichiers modifiés, et cliquer sur chaque élément devrait ouvrir une fenêtre de différence qui montre ce que le correctif est sur le point de faire à ce fichier.
Bonne chance.
la source
L'utilitaire patch.exe de l'installation de Git fonctionne sous Windows 10.
Installez Git pour Windows puis utilisez le
"C:\Program Files\Git\usr\bin\patch.exe"
commande pour appliquer un correctif.Si un message d'erreur comme un
Hunk #1 FAILED at 1 (different line endings).
avait été obtenu sur la sortie lors de l'application d'un correctif, essayez d'ajouter le-l
(qui est un raccourci pour le--ignore-whitespace
) ou les--binary
commutateurs à la ligne de commande.la source
Vous pouvez utiliser ceci port natif Win32 de l'utilitaire de correctif.
Il vient avec une plus grande sélection d'autres utilitaires et contrairement à Cygwin et similaire, il n'a pas besoin de DLL ou similaire. Choisissez simplement le petit exécutable de votre choix et stockez-le où vous le souhaitez.
Utilisation simple:
Obtenez plus d'aide:
la source
patch.exe
.patch
. Windows considère que tous les ex avec le motpatch
sont suspects.Vous pouvez installer Cygwin , puis utiliser l' outil de correction de ligne de commande pour appliquer le correctif. Voir aussi cette page de manuel Unix , qui s'applique au patch .
la source
Il semble que TortoiseSVN (TortoiseMerge) nécessite la ligne
Index: foobar.py
dans le fichier diff / patch. C'est ce que j'avais besoin de faire pour faire fonctionner un fichier de correctif non-TortoiseSVN avec le clic droit de TortoiseSVN Appliquer le correctif commande .Avant:
Après:
Ou si vous connaissez la révision spécifique à partir de laquelle votre contributeur travaillait:
la source
J'utilise MSYS2 depuis http://www.msys2.org/
Il offre de nombreux services publics comme
patch
,which
,git
,tree
et beaucoup d' autres.Après avoir installé MSYS2, exécutez simplement le gestionnaire de packages pour installer
patch
:la source
Le patch lui indique le fichier auquel appliquer. L'en-tête devrait ressembler à quelque chose comme (visualisez-le dans le Bloc-notes ou dans votre éditeur de texte préféré):
Dans le cas d'un patch Subversion, vous auriez également des numéros de révision (puisque les noms de fichiers sont les mêmes).
Le correctif GNU vous permettra de remplacer ces noms, mais je ne connais aucun outil GUI pour faire de même. Je vérifierais avec les différents programmes diff - cependant, il ne semble pas que WinMerge prenne en charge l'application de correctifs.
la source
Eclipse devrait pouvoir le faire, allez dans la perspective TeamSynchronize puis dans Projet-> Appliquer le correctif
la source
Pour les projets Java, j'ai utilisé NetBeans pour appliquer des fichiers de correctifs. Si le code Java que vous corrigez n'est pas déjà un projet NetBeans, créez un projet pour celui-ci. Pour créer un nouveau projet:
Maintenant que vous avez un projet, appliquez le patch:
C'est tout. Votre patch doit être appliqué et vous devriez voir une fenêtre de comparaison montrant les modifications.
la source
J'utilise déjà BeyondCompare (commercial) pour les différences et les fusions, et cet outil a également la capacité de créer, afficher et appliquer des correctifs.
la source
Si vous utilisez Mercurial , cela se fait via "import". Donc, sur la ligne de commande, la
hg import
commande, ou (vous pouvez trouver le--no-commit
option utile), ou "Repository" => "Importer ..." dans Hg Workbench.Notez que ceux-ci valideront les modifications par défaut; vous pouvez éviter cette
hg import --no-commit
option si vous utilisez la ligne de commande, ou si vous avez utilisé Hg Workbench, vous trouverez peut-être utile d'émettrehg rollback
après la fusion.la source
Lors de l'application de correctifs à l'aide de TortoiseSVN, j'enregistre généralement le chemin à la racine du référentiel extrait. Vous devriez alors pouvoir faire un clic droit sur le patch, aller dans le menu TortoiseSVN, et cliquer ApplyPatch. ApplyPatch doit déterminer automatiquement à quel niveau de la hiérarchie des répertoires le correctif a été créé.
Cependant, j'ai eu des problèmes dans le passé avec l'application de correctifs contenant de nouveaux fichiers ou impliquant des renommages de fichiers. Quel que soit l'algorithme utilisé par Tortoise pour cela, il ne semble pas très bien gérer ces scénarios. Unicode peut vous poser des problèmes similaires.
la source
Avez-vous deux moniteurs? J'avais le même problème avec TortoiseMerge et je me suis rendu compte que lorsque j'ai désactivé l'un des moniteurs, la petite fenêtre avec la liste des fichiers s'est affichée. J'espère que cela vous aide.
la source
Si vous obtenez le message d'erreur "Pas une copie de travail", essayez de sélectionner un répertoire dans la boîte de dialogue TortoiseMerge qui est un répertoire de travail de SVN.
la source
Un port BusyBox pour Windows a à la fois une commande diff et une commande patch, mais ils ne prennent en charge que le format unifié.
la source
Utilisez simplement:
n'oubliez pas d'exécuter cette commande uniquement à partir de l'emplacement du dossier où vous avez créé le patch.
la source