Die Diff Match - und Patch-Bibliotheken bieten robuste Algorithmen, um die für die Synchronisierung von Klartext erforderlichen Operationen durchzuführen. Diff: Vergleichen Sie zwei Blöcke von Klartext und geben Sie eine Liste der Unterschiede effizient zurück. Diff Demo Match: Angesichts einer Such-String, finden Sie seine besten Fuzzy-Match in einem Block von Klartext. Gewichtet für Genauigkeit und Lage. Match Demo Patch: Wenden Sie eine Liste von Patches auf Klartext an. Verwenden Sie am besten, um Patch zu verwenden, auch wenn der zugrundeliegende Text nicht übereinstimmt. Patch Demo Derzeit verfügbar in Java, JavaScript, Dart, C, C, Objective C, Lua und Python. Unabhängig von der Sprache, jede Bibliothek verfügt über die gleiche API und die gleiche Funktionalität. Alle Versionen haben auch umfangreiche Testkabelbäume. Algorithmen Diese Bibliothek implementiert den Myerx27s-Diff-Algorithmus, der allgemein als der beste Allzweck-Diff betrachtet wird. Eine Schicht von Pre-Diff-Beschleunigungen und Post-Diff-Cleanups umgibt den Diff-Algorithmus, wodurch sowohl die Performance - als auch die Output-Qualität verbessert werden.15.1 Optionen zum Patch Hier ist eine Zusammenfassung aller Optionen, die GNU Patch akzeptiert. Siehe Patch und Tradition. Für welche dieser Optionen sind sicher in älteren Versionen von Patch zu verwenden. Mehrere Single-Brief-Optionen, die kein Argument nehmen, können zu einem einzigen Kommandozeilen-Argument mit nur einem Bindestrich kombiniert werden. Sichern Sie den ursprünglichen Inhalt jeder Datei, auch wenn Backups normalerweise nicht gemacht werden. Siehe Sicherungen. - B-Präfix - Präfix-Präfix Prefix-Prefix zu Backup-Dateinamen. Siehe Sicherungsnamen. Sichern Sie den ursprünglichen Inhalt jeder Datei, wenn der Patch nicht genau mit der Datei übereinstimmt. Dies ist das Standardverhalten, wenn es nicht mit POSIX übereinstimmt. Siehe Sicherungen. Lesen und schreiben Sie alle Dateien im Binärmodus, außer für Standardausgabe und devtty. Diese Option hat keine Auswirkung auf POSIX-konforme Systeme wie GNU Linux. Auf Systemen, in denen diese Option einen Unterschied macht, sollte das Flecken durch lsquo diff - ein - binäres rsquo erzeugt werden. Siehe Binary. Interpretiere die Patch-Datei als Kontext diff. Siehe Patch-Eingabe. - d Verzeichnis --verzeichnis Verzeichnis Verzeichnis Verzeichnis das aktuelle Verzeichnis für die Interpretation von beiden Dateinamen in der Patch-Datei und Dateinamen als Argumente zu anderen Optionen gegeben. Siehe Patch-Verzeichnisse. - D name --ifdef name Machen Sie fusioniert if-then-else Ausgabe mit Namen. Siehe If-then-else. Drucken Sie die Ergebnisse der Anwendung der Patches, ohne tatsächlich alle Dateien zu ändern. Siehe Trockenläufe. Interpretiere die Patch-Datei als Ed-Skript. Siehe Patch-Eingabe. Entfernen Sie die Ausgabedateien, die leer sind, nachdem die Patches angewendet wurden. Siehe Erstellen und Entfernen. Nehmen wir an, dass der Benutzer genau weiß, was er oder sie tut, und stellen Sie keine Fragen. Siehe Patch-Meldungen. - F-Linien - Fuzz-Zeilen Stellen Sie den maximalen Fuzz-Faktor auf Zeilen ein. Siehe Ungenau. Wenn num positiv ist, erhalten Sie Eingabedateien von einem Revisionskontrollsystem, wenn nötig, wenn null, erhalten Sie nicht die Dateien, wenn negativ, fragen Sie den Benutzer, ob die Dateien zu bekommen. Siehe Revision Control. Geben Sie eine Zusammenfassung der Nutzung aus und beenden Sie dann. - i patchfile --input patchfile Lesen Sie den Patch von der Patchfile und nicht von der Standard-Eingabe. Siehe Patch-Optionen. Lassen Sie eine beliebige Folge von Leerzeichen (Leerzeichen oder Tabulatoren) in der Patch-Datei mit einer beliebigen Sequenz von Leerzeichen in der Eingabedatei übereinstimmen. Siehe Geänderter Weißraum. Interpretiere die Patch-Datei als normales Diff. Siehe Patch-Eingabe. Ignoriere Patches, die Patches sind umgekehrt oder bereits angewendet. Siehe auch - R. Siehe umgekehrte Patches. Sichern Sie nicht den ursprünglichen Inhalt der Dateien. Dies ist das Standardverhalten bei der Einhaltung von POSIX. Siehe Sicherungen. - o file --output file Verwenden Sie die Datei als Ausgabedateiname. Siehe Patch-Optionen. - p-Nummer - Strip-Nummer Legen Sie den Dateinamen-Strip-Count auf die Nummer ein. Siehe Patch-Verzeichnisse. Entsprechend POSIX. Als sei die Umgebungsvariable POSIXLYCORRECT gesetzt worden. Siehe Patch und POSIX. Verwenden Sie Stilwort, um Namen in der Diagnose zu zitieren, als ob die Umgebungsvariable QUOTINGSTYLE auf Wort gesetzt worden wäre. Siehe Patch Quoting Style. - r ablehnen-file --reject-file reject-file Verwenden Sie die Ablehnungsdatei als den Ablehnungs-Dateinamen. Siehe Ablehnen von Namen. Nehmen wir an, dass dieser Patch mit den alten und neuen Dateien erstellt wurde. Siehe umgekehrte Patches. Arbeiten Sie still, wenn kein Fehler auftritt. Siehe Patch-Meldungen. Fragen Sie keine Fragen. Siehe Patch-Meldungen. Legen Sie die Modifikations - und Zugriffszeiten von gepatchten Dateien aus Zeitstempeln fest, die in Kontext-Diff-Headern angegeben sind, vorausgesetzt, dass die Kontext-Diff-Header die Ortszeit verwenden. Siehe Patching Time Stempel. Interpretiere die Patch-Datei als einheitliches diff. Siehe Patch-Eingabe. Geben Sie die Versionsinformationen aus und beenden Sie dann. - V backup-style --versioncontrol backup-style Wählen Sie die Namenskonvention für Sicherungsdateinamen aus. Siehe Sicherungsnamen. Drucken Sie mehr Diagnosen als üblich. Siehe Patch-Meldungen. - x number --debug number Legen Sie interne Debugging-Flags fest. Von Interesse nur Patch Patches. - Y Präfix --Basename-Präfix-Präfix Pref Präfix auf Basisnamen von Backup-Dateien. Siehe Sicherungsnamen. - z Suffix --Suffix-Suffix Verwenden Sie Suffix als Backup-Erweiterung anstelle von lsquo. orig rsquo oder lsquo Setzen Sie die Modifikations - und Zugriffszeiten von gepatchten Dateien aus Zeitstempeln, die in Kontext-Diff-Headern angegeben sind, vorausgesetzt, dass die Kontext-Diff-Header UTC verwenden. Sehen Sie Patching Time Stamps. The Zehn Minuten Guide to diff und Patch Situation eins: Sie versuchen, ein Paket aus der Quelle zu kompilieren und Sie entdecken, dass jemand bereits die Arbeit für Sie gemacht hat, um es etwas zu ändern, um auf Ihrem System zu kompilieren. Sie haben ihre Arbeit als Patch zur Verfügung gestellt, aber Sie sind nicht sicher, wie man davon Gebrauch macht. Die Antwort ist, dass Sie den Patch auf den ursprünglichen Quellcode mit einem Kommandozeilen-Tool namens, passend, Patch anwenden. Situation zwei: Sie haben den Quellcode in ein Open-Source-Paket heruntergeladen und nach einer Stunde oder so von kleineren Änderungen können Sie es auf Ihrem System kompilieren. Sie möchten Ihre Arbeit anderen Programmierern oder den Autoren des Pakets zur Verfügung stellen, ohne das gesamte modifizierte Paket neu zu verteilen. Jetzt bist du in einer Situation, in der du einen eigenen Patch erstellen musst, und das Werkzeug, das du brauchst, ist diff. Dies ist eine kurze Anleitung zum Diff und Patch, die Ihnen in diesen Situationen helfen wird, indem Sie die Werkzeuge beschreiben, wie sie am häufigsten verwendet werden. Es sagt Ihnen genug, um sofort loszulegen. Später können Sie die Ins und Outs von diff und Patch in Ihrer Freizeit, mit den Man-Seiten zu lernen. Anwenden von Patches mit Patch Um einen Patch auf eine einzelne Datei anzuwenden, wechseln Sie in das Verzeichnis, in dem sich die Datei befindet, und rufen Patch auf: Diese Anleitung geht davon aus, dass der Patch im einheitlichen Format verteilt wird, der die Datei identifiziert, auf die das Patch angewendet werden soll. Wenn nicht, können Sie die Datei auf der Befehlszeile angeben: Das Anwenden von Patches auf ganze Verzeichnisse (vielleicht der häufigere Fall) ist ähnlich, aber Sie müssen vorsichtig sein, einen p-Level einzustellen. Was bedeutet dies, dass innerhalb von Patch-Dateien die zu patchten Dateien durch Pfadnamen identifiziert werden, die möglicherweise anders sind, wenn sich die Dateien auf Ihrem Computer befinden und nicht auf dem Computer, auf dem das Patch erstellt wurde. Der p-Level weist den Patch an, Teile des Pfadnamens zu ignorieren, damit er die Dateien korrekt identifizieren kann. Am häufigsten wird ein p-Level von einem funktionieren, also verwenden Sie: Sie sollten in das Top-Level-Quellverzeichnis wechseln, bevor Sie diesen Befehl ausführen. Wenn eine Patch-Ebene von einem nicht korrekt identifizieren keine Dateien zu Patch, überprüfen Sie die Patch-Datei für Dateinamen. Wenn Sie einen Namen sehen und Sie arbeiten in einem Verzeichnis, das nethttp. c enthält, verwenden Sie Im Allgemeinen, zählen Sie eine für jeden Pfad Trennzeichen (Schrägstrich Zeichen), die Sie vom Anfang des Pfades zu entfernen, bis was übrig ist ein Pfad Das existiert in Ihrem Arbeitsverzeichnis. Die Zählung, die du erreichst, ist der p-Level. Um einen Patch zu entfernen, benutze das - R-Flag, dh das Erstellen von Patches mit diff Mit diff ist einfach, ob Sie mit einzelnen Dateien oder ganzen Quellverzeichnissen arbeiten. Um einen Patch für eine einzelne Datei zu erstellen, verwenden Sie das Formular: Um einen Patch für einen ganzen Quellbaum zu erstellen, kopieren Sie den Baum: Nehmen Sie die erforderlichen Änderungen im Verzeichnis neu vor. Dann erstellen Sie einen Patch mit dem folgenden Befehl: Das ist alles, was Sie brauchen, um mit Diff und Patch zu beginnen. Für weitere Informationen verwenden: Übersetzungen Dieser Artikel wurde übersetzt und in den folgenden Sprachen neu veröffentlicht: Kommentar zu diesem Artikel und seinem Thema Copyright copy 2006-2008 Stephen Jungels. Schriftliche Erlaubnis ist erforderlich, um diesen Artikel zurückzugeben oder zu veröffentlichen. Letzte Änderung: Mo Okt 26 10:31:23 CDT 2009
Comments
Post a Comment