Ich versuche, Diff-Datei (Patch-Datei) zu generieren und diesen Patch auf einige bereits bereitgestellten Ordner anwenden. Ich verwende den folgenden Befehl ein Diff-Datei zu generieren:tfs einheitliche diff-Datei-Generierung. Header-Zeile stimmt nicht überein mit Patch-Befehl
tf diff version.asp /format:unified > C:\patch.diff
Es erzeugt so etwas wie:
Comparing local to latest: C:\dev\folder\version.asp File: version.asp ===================================================================
--- version.asp (local) 2011-06-17 09 : 18Text, nach Dateinamen, sollte
+++ v nicht hier ersion.asp; 958 (Server) 2011-09-19 14.27hier die gleiche
@@ -13,7 +13,7 @@
'============================================================
Dim APP_VERSION, APP_BUILD, APP_DATE
APP_VERSION = 6
-APP_BUILD = 45
+APP_BUILD = 52
%>
\ No newline at end of file
============================================================
Das Problem auf der Linie erscheint, die fett ist. Die UNIX-Anwendung patch erkennt keine Dateinamen, da diese Zeilen nur den Dateinamen ohne zusätzliche Informationen enthalten sollten. Wenn ich Text nach dem Dateinamen in diesen Zeilen entferne, wird Patch erfolgreich ausgeführt. Also meine Frage ist: ist es möglich, Diff-Datei von TF Diff ohne solche Informationen in der Kopfzeile zu erzeugen, so dass es kompatibel ist mit Patch?
Es gibt eine Alternative wie Regex anzuwenden und solche Zeilen zu ersetzen, aber es wäre der letzte Versuch, es zum Laufen zu bringen.
Danke
UPDATE
am Ende i mit regex
endete, die von den Linien diese unnötigen Informationen entfernt, führen Sie es mit Unix sed
Dienstprogramm, ich erhielt Windows-Version von MinGW
.
sed "s/^\(+++\|---\)\(.*\)\(\.[A-Za-z0-9]\{1,4\}\)\(.*\)$/\1\2\3/" C:\patch.diff > C:\patch.new
patch.diff
ist malformed Datei von tfs
erzeugt und auf der Ausgabe patch.new
korrekte einheitliche diff-Datei und kompatibel mit patch
Dienstprogramm
UPDATE2
nach Stunden Hämmer gegen die Wand Kopf Ich fand heraus, dass in Diff-Dateien aus tfs
Unicode erweiterte Zeichen einfach escaped oder ersetzt durch seine schließt t ASCII-Darstellung.
So zum Beispiel, wenn Code hat ä
Brief, in der Ausgabe Diff-Datei wird es durch eine einfache a
Brief ersetzt werden.
Dies macht Diff Dateien, generiert von tfs
Dienstprogramm, unbrauchbar.
Dies ist offensichtlich ein Fehler.
FYI: Ich bin mit VS2010 und Team Foundation Server 2010
Können Sie die gleichen zwei Dateien mit 'diff -u' vergleichen und dann die Diffs vergleichen? –
Eigentlich habe ich deine Frage nicht bekommen, sorry – matsoor
Am Ende endete ich mit Regex, die diese unnötigen Informationen aus den Zeilen entfernt, führen Sie es mit Unix-Befehl 'sed', ich habe Windows-Version von MinGW. 'sed" s/^ \ (+++ \ | --- \) \ (. * \) \ (\. [A-Za-z0-9] \ {1,4 \} \) \ (. * \) $/\ 1 \ 2 \ 3/"C: \ patch.diff> C: \ patch.new" hier ist 'patch.diff' eine fehlerhafte Datei und auf der Ausgabe' patch.new' ist die korrekte Datei und kompatibel mit 'Patch'-Dienstprogramm – matsoor