Es gibt viele Programme, die einen Diff-Patch erstellen können, aber ich habe verdammt viel Zeit damit, einen anzuwenden. Ich versuche, einen Patch zu verteilen, und habe von einem Benutzer eine Frage zur Anwendung erhalten. Also habe ich versucht, es selbst herauszufinden und festgestellt, dass ich keine Ahnung habe, und die meisten Tools, die ich finden kann, sind Befehlszeilen. (Ich kann mit einer Befehlszeile umgehen, aber viele Leute würden ohne eine nette, freundliche Benutzeroberfläche verloren gehen. Diese sind also für diesen Zweck nicht gut.)
Ich habe versucht, TortoiseSVN zu verwenden. Ich habe den Patch, den ich anwenden möchte. Ich klicke mit der rechten Maustaste auf den Patch, und im Untermenü TortoiseSVN gibt es eine Option mit der Aufschrift "Patch anwenden". Alles was es tut ist ein leeres Fenster hochzuziehen.
Also habe ich versucht, Open zu treffen. Es gibt zwei Möglichkeiten: Zusammenführen und Anwenden von Unified Diff. (Der Patch ist zum Glück im einheitlichen Diff-Format.) Aber die Apply-Option funktioniert einfach nicht: Sie fragt nach dem Patch und einem Ordner. Irgendwie hat es vergessen, nach der Datei zu fragen, auf die der Patch angewendet werden soll! TortoiseSVN funktioniert also einfach nicht. Gibt es ein Windows-GUI-basiertes Dienstprogramm, das einen Patch und eine Datei nimmt und ordnungsgemäß anwendet?
BEARBEITEN: Wenn man sich die bisherigen Antworten ansieht, scheint es, dass Tortoise es nur richtig macht, wenn es sich um eine Datei handelt, die bereits versioniert ist. Das ist hier nicht der Fall. Ich muss in der Lage sein, einen Patch auf eine Datei anzuwenden, die nicht aus einem SVN-Repository stammt. Ich habe gerade versucht, Tortoise zu verwenden, weil ich zufällig weiß, dass SVN Unterschiede verwendet und wissen muss, wie man sie sowohl erstellt als auch anwendet.
Antworten:
Patch anwenden
Mit TortoiseMerge:
Alternative Screeny, wenn Sie von TortoiseMerge öffnen. In der folgenden Abbildung bezieht sich das Verzeichnis auf das in Schritt 2 oben erwähnte Verzeichnis "Zusammenführen":
Screenshot der WinMerge-Benutzeroberfläche:
quelle
Ich habe nur dafür ein reines Python-Tool erstellt . Es hat ein vorhersehbares plattformübergreifendes Verhalten. Obwohl keine neuen Dateien erstellt werden (zum Zeitpunkt des Schreibens) und keine grafische Benutzeroberfläche vorhanden ist, kann es als Bibliothek zum Erstellen von Grafikwerkzeugen verwendet werden.
UPDATE : Es sollte bequemer sein, es zu verwenden, wenn Sie Python installiert haben.
quelle
TortoiseMerge ist ein separates Dienstprogramm, das im Lieferumfang von TortoiseSVN enthalten ist.
Es kann auch separat im Archiv TortoiseDiff.zip heruntergeladen werden . Auf diese Weise können Sie einheitliche Unterschiede auf nicht versionierte Dateien anwenden.
quelle
Ich weiß, dass Sie gesagt haben, Sie würden eine GUI bevorzugen, aber die Befehlszeilentools werden die Arbeit gut machen. Unter GnuWin finden Sie eine Portierung von Unix-Tools für Windows. Du brauchst natürlich den Patch-Befehl ;-)
Möglicherweise tritt jedoch ein Problem mit der Leitungsbeendigung auf. Der GnuWin-Port geht davon aus, dass die Patchdatei über einen Zeilenabschluss im DOS-Stil (CR / LF) verfügt. Versuchen Sie, die Patchdatei in einem einigermaßen intelligenten Editor zu öffnen, damit sie für Sie konvertiert wird.
quelle
In TortoiseSVN funktioniert das Anwenden von Patches. Sie müssen den Patch auf dasselbe Verzeichnis anwenden, aus dem er erstellt wurde . Es ist immer wichtig, dies zu berücksichtigen. So geht's in TortoiseSVN:
Klicken Sie mit der rechten Maustaste auf den Ordner, auf den Sie den Patch anwenden möchten. Es wird ein Dialogfeld angezeigt, in dem Sie nach dem Speicherort der Patch-Datei gefragt werden. Wählen Sie die Datei aus, und dies sollte ein kleines Dateilistenfenster öffnen, in dem die geänderten Dateien aufgelistet sind. Wenn Sie auf jedes Element klicken, wird ein Diff-Fenster geöffnet, in dem angezeigt wird, was der Patch mit dieser Datei tun soll.
Viel Glück.
quelle
Das Dienstprogramm patch.exe aus der Git-Installation funktioniert unter Windows 10.
Installieren Sie Git für Windows und verwenden Sie den
"C:\Program Files\Git\usr\bin\patch.exe"
Befehl, um einen Patch anzuwenden.Wenn
Hunk #1 FAILED at 1 (different line endings).
beim Anwenden eines Patches eine Fehlermeldung wie a in der Ausgabe angezeigt wurde, versuchen Sie, die-l
(das ist eine Verknüpfung für--ignore-whitespace
) oder die--binary
Schalter zur Befehlszeile hinzuzufügen .quelle
Sie können diesen nativen Win32-Port des Patch-Dienstprogramms verwenden.
Es wird mit einer größeren Auswahl anderer Dienstprogramme geliefert und benötigt im Gegensatz zu Cygwin und ähnlichen keine DLLs oder ähnliches. Wählen Sie einfach eine kleine ausführbare Datei Ihrer Wahl aus und speichern Sie sie, wo immer Sie möchten.
Einfache Verwendung:
Holen Sie sich weitere Hilfe:
quelle
patch.exe
.patch
. Windows betrachtet alle Exes mit dem Wortpatch
als verdächtig.Sie können Cygwin installieren und dann den Patch mit dem Befehlszeilen- Patch- Tool anwenden. Siehe auch diese Unix-Manpage , die für Patches gilt .
quelle
Es scheint, dass TortoiseSVN (TortoiseMerge) die Zeile
Index: foobar.py
in der Diff / Patch-Datei benötigt. Dies ist, was ich tun musste, damit eine Nicht-TortoiseSVN-Patch-Datei mit TortoiseSVNs Rechtsklick- Befehl Patch anwenden funktioniert .Vor:
Nach dem:
Oder wenn Sie die spezifische Revision kennen, von der aus Ihr Mitwirkender gearbeitet hat:
quelle
Ich benutze MSYS2 von http://www.msys2.org/
Es bietet viele Dienstprogramme wie
patch
,which
,git
,tree
, und viele mehr.Führen Sie nach der Installation von MSYS2 einfach den Paketmanager aus, um Folgendes zu installieren
patch
:quelle
Der Patch gibt an, auf welche Datei angewendet werden soll. Die Kopfzeile sollte ungefähr so aussehen (im Editor oder in Ihrem bevorzugten Texteditor anzeigen):
Im Fall eines Subversion-Patches hätten Sie auch Revisionsnummern (da die Dateinamen identisch sind).
Mit dem GNU-Patch können Sie diese Namen überschreiben , aber ich kenne keine GUI-Tools, um dasselbe zu tun. Ich würde mich bei den verschiedenen Diff-Programmen erkundigen - es scheint jedoch nicht, dass WinMerge das Anwenden von Patches unterstützt.
quelle
Eclipse sollte dazu in der Lage sein, zur TeamSynchronize-Perspektive und dann zu Projekt-> Patch anwenden wechseln
quelle
Für Java-Projekte habe ich NetBeans verwendet , um Patch-Dateien anzuwenden. Wenn der Java-Code, den Sie patchen, noch kein NetBeans-Projekt ist, erstellen Sie ein Projekt dafür. So erstellen Sie ein neues Projekt:
Nachdem Sie ein Projekt haben, wenden Sie den Patch an:
Das ist es. Ihr Patch sollte angewendet werden und Sie sollten ein Diff-Fenster sehen, in dem die Änderungen angezeigt werden.
quelle
Ich verwende bereits BeyondCompare (kommerziell) für Differentiale und verschmilzt, und dieses Tool auch die Fähigkeit hat , erstellen, anzeigen und Patches anwenden.
quelle
Wenn Sie Mercurial verwenden , erfolgt dies über "Importieren". Also in der Kommandozeile den
hg import
Befehl oder (Sie können den finden--no-commit
Option nützlich) oder "Repository" => "Importieren ..." in Hg Workbench.Beachten Sie, dass diese die Änderungen standardmäßig festschreiben. Sie können diese
hg import --no-commit
Option vermeiden , wenn Sie die Befehlszeile verwenden oder wenn Sie Hg Workbench verwendet haben. Möglicherweise ist es hilfreich, siehg rollback
nach dem Zusammenführen auszugeben.quelle
Beim Anwenden von Patches mit TortoiseSVN speichere ich den Pfad normalerweise im Stammverzeichnis des ausgecheckten Repositorys. Sie sollten dann in der Lage sein, mit der rechten Maustaste auf den Patch zu klicken, zum TortoiseSVN-Menü zu wechseln und auf ApplyPatch zu klicken. ApplyPatch sollte automatisch herausfinden, auf welcher Ebene in der Verzeichnishierarchie der Patch erstellt wurde.
Ich hatte jedoch in der Vergangenheit Probleme beim Anwenden von Patches, die neue Dateien enthalten oder die das Umbenennen von Dateien beinhalten. Welchen Algorithmus Tortoise auch immer dafür verwendet, scheint diese Szenarien nicht sehr gut zu handhaben. Unicode kann Ihnen ähnliche Probleme bereiten.
quelle
Haben Sie zwei Monitore? Ich hatte das gleiche Problem mit TortoiseMerge und stellte fest, dass beim Deaktivieren eines der Monitore das kleine Fenster mit der Dateiliste angezeigt wurde. Hoffe das hilft dir.
quelle
Wenn die Fehlermeldung "Keine Arbeitskopie" angezeigt wird, wählen Sie im Dialogfeld "TortoiseMerge" ein Verzeichnis aus, bei dem es sich um ein Arbeitsverzeichnis von SVN handelt.
quelle
Ein BusyBox- Port für Windows verfügt sowohl über einen Diff- als auch einen Patch-Befehl, unterstützt jedoch nur ein einheitliches Format.
quelle
Benutz einfach:
Denken Sie daran, diesen Befehl nur an dem Ordner auszuführen, an dem Sie den Patch erstellt haben.
quelle