Di bawah Linux, sangat sukar untuk menggunakan arahan svn diff secara langsung untuk melihat pengubahsuaian kod, jadi saya mencari penyelesaian yang lebih baik di Internet, iaitu menggunakan vimdiff sebagai alat melihat kod untuk svn diff, terutamanya bagi mereka yang terbiasa menggunakan vim. Ia sangat mudah.
Apabila menggunakan arahan svn diff untuk membandingkan pengubahsuaian fail tertentu, contohnya, laksanakan arahan berikut:
$ svn diff -r4420 ngx_http_limit_req_module.c
Kemudian arahan berikut sebenarnya akan dihantar ke program diff lalai:
-u -L ngx_http_limit_req_module.c (semakan 4420) -L ngx_http_limit_req_module.c (salinan kerja) .svn/tmp/tempfile.tmp ngx_http_limit_req_module.c
Penjelasan tentang perbezaan svn dalam Soalan Lazim rasmi svn (Bahasa Cina, Bahasa Inggeris):
Apabila menggunakan arahan perbezaan luaran, Subversion menjana baris arahan yang sangat kompleks. Parameter pertama ialah spesifik --diff-cmd, diikuti dengan --extensions khusus (walaupun sambungan diabaikan apabila menggunakan simbol kosong --), atau jika --extensions tidak ditentukan atau --extensions kosong, Tambah parameter '-u'. Untuk argumen ketiga dan keempat, Subversion akan memberikan "-L" dan label fail pertama (contohnya, ""project_issues.html (semakan 11209)"). Argumen kelima dan keenam ialah satu lagi " -L" dan label fail kedua. Argumen ketujuh dan kelapan ialah nama fail pertama dan kedua (contohnya, ".svn/text-base/project_issues.html.svn-base" dan ".svn/tmp/project_issues .html.tmp")
Selepas memahami arahan panggilan dalaman diff, agak mudah untuk menggunakan vimdiff sebagai program diff.
Apabila vimdiff membandingkan dua fail, ia hanya perlu mengetahui laluan dan nama fail kedua-dua fail, iaitu parameter ke-7 dan ke-8 dalam arahan dalaman perbezaan di atas
Ia juga menerangkan bahawa adalah tidak boleh untuk memanggil vimdiff secara langsung dengan --diff-cmd kerana terlalu banyak parameter dalam arahan dalaman diff (arahannya adalah seperti berikut).
$ svn diff --diff-cmd vimdiff -r4420 ngx_http_limit_req_module.c
Jadi, kita perlu menulis skrip lain sendiri, biarkan skrip ini digunakan sebagai program diff, dapatkan arahan dalaman diff, dan kemudian hanya ambil parameter ke-7 dan ke-8, dan kemudian hantar ke vimdiff, supaya kita boleh menyelesaikannya masalah banyak parameter Masalah.
Skrip (diffwrap.sh) adalah seperti berikut:
#!/bin/sh # 去掉前5个参数 shift 5 # 使用vimdiff比较 vimdiff "$@"
Selain itu, svn juga menyediakan fungsi mengubah suai program diff lalai dalam fail konfigurasi, supaya anda tidak perlu menentukan --diff-cmd setiap kali anda menggunakan svn diff.
Ubah suai ~/.subversion/config dan cari baris konfigurasi berikut:
# diff-cmd = diff_program (perbezaan, gdiff, dll.)
Hanya tambah laluan ke skrip di atas, sebagai contoh, tukar kepada
diff-cmd = /usr/local/bin/diffwrap.sh
Pada masa hadapan, menggunakan arahan svn diff akan membuka vimdiff secara lalai untuk membandingkan dua fail.
Rendering:
Atas ialah kandungan terperinci Gantikan svn diff dengan vimdiff: alat untuk membandingkan kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!