Unter Linux ist es sehr schwierig, den Befehl svn diff direkt zum Anzeigen von Codeänderungen zu verwenden. Daher habe ich im Internet nach einer besseren Lösung gesucht, nämlich vimdiff als Tool zum Anzeigen von Code für svn diff zu verwenden, insbesondere für diejenigen, die dies tun Ich bin daran gewöhnt, vim zu verwenden. Es ist wirklich praktisch.
Wenn Sie beispielsweise den Befehl svn diff verwenden, um die Änderungen einer bestimmten Datei zu vergleichen, führen Sie den folgenden Befehl aus:
$ svn diff -r4420 ngx_http_limit_req_module.c
Dann wird tatsächlich der folgende Befehl an das Standard-Diff-Programm gesendet:
-u -L ngx_http_limit_req_module.c (Revision 4420) -L ngx_http_limit_req_module.c (Arbeitskopie) .svn/tmp/tempfile.tmp ngx_http_limit_req_module.c
Erklärung des SVN-Diffs in den offiziellen SVN-FAQs (Chinesisch, Englisch):
Bei Verwendung eines externen Diff-Befehls generiert Subversion eine sehr komplexe Befehlszeile. Der erste Parameter ist das spezifische --diff-cmd, gefolgt vom spezifischen --extensions (obwohl Erweiterungen ignoriert werden, wenn ein leeres --Symbol verwendet wird), oder wenn --extensions nicht angegeben ist oder --extensions leer ist, fügen Sie das hinzu '-u'-Parameter. Für das dritte und vierte Argument übergibt Subversion ein „-L“ und die Bezeichnung der ersten Datei (z. B. „project_issues.html (Revision 11209)“). Das fünfte und sechste Argument sind ein weiteres „-L“ und die Bezeichnung der zweiten Datei. Das siebte und achte Argument sind die Namen der ersten bzw. zweiten Datei (z. B. „.svn/text-base/project_issues.html.svn-base“ und „.svn/tmp/project_issues“. .html.tmp")
Nachdem Sie den internen Aufrufbefehl von diff verstanden haben, ist es relativ einfach, vimdiff als Diff-Programm zu verwenden.
Wenn vimdiff zwei Dateien vergleicht, muss es nur die Pfade und Dateinamen der beiden Dateien kennen, die der 7. und 8. Parameter im obigen internen Befehl diff sind
;Es wird auch erklärt, dass es aufgrund zu vieler Parameter im internen Diff-Befehl (der Befehl lautet wie folgt) nicht möglich ist, vimdiff direkt mit --diff-cmd aufzurufen.
$ svn diff --diff-cmd vimdiff -r4420 ngx_http_limit_req_module.c
Also müssen wir selbst ein weiteres Skript schreiben, dieses Skript als Diff-Programm verwenden lassen, den internen Befehl von Diff erhalten und dann nur den 7. und 8. Parameter nehmen und sie dann an vimdiff übergeben, damit wir es lösen können das Problem vieler Parameter Problem.
Das Skript (diffwrap.sh) lautet wie folgt:
#!/bin/sh # 去掉前5个参数 shift 5 # 使用vimdiff比较 vimdiff "$@"
Darüber hinaus bietet svn auch die Funktion, das Standard-Diff-Programm in der Konfigurationsdatei zu ändern, sodass Sie nicht jedes Mal, wenn Sie svn diff verwenden, --diff-cmd angeben müssen.
Ändern Sie ~/.subversion/config und suchen Sie die folgende Konfigurationszeile:
# diff-cmd = diff_program (diff, gdiff usw.)
Fügen Sie einfach den Pfad zum obigen Skript hinzu und ändern Sie ihn beispielsweise in
diff-cmd = /usr/local/bin/diffwrap.sh
Zukünftig wird durch die Verwendung des Befehls svn diff standardmäßig vimdiff geöffnet, um zwei Dateien zu vergleichen.
Rendering:
Das obige ist der detaillierte Inhalt vonErsetzen Sie svn diff durch vimdiff: ein Tool zum Vergleichen von Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!