(เมื่อพยายามหาวิธีใช้ kdiff3 จาก WSL คอมไพล์ฉันลงเอยที่นี่และได้ชิ้นสุดท้ายดังนั้นฉันจะโพสต์คำตอบของฉันสำหรับคนอื่นก็สะดุดที่นี่ในขณะที่พยายามหาคำตอบนั้น)
วิธีใช้ kdiff3 เป็นเครื่องมือ diff / merge สำหรับ WSL git
ด้วยการอัพเดท Windows 1903 มันง่ายกว่ามาก เพียงใช้ wslpath และไม่จำเป็นต้องแบ่งปัน TMP จาก Windows ไปยัง WSL เนื่องจากฝั่ง Windows ในขณะนี้สามารถเข้าถึงระบบไฟล์ WSL ผ่าน \ wsl $:
[merge]
renormalize = true
guitool = kdiff3
[diff]
tool = kdiff3
[difftool]
prompt = false
[difftool "kdiff3"]
# Unix style paths must be converted to windows path style
cmd = kdiff3.exe \"`wslpath -w $LOCAL`\" \"`wslpath -w $REMOTE`\"
trustExitCode = false
[mergetool]
keepBackup = false
prompt = false
[mergetool "kdiff3"]
path = kdiff3.exe
trustExitCode = false
ก่อนที่ Windows จะอัปเดต 1903
ขั้นตอนในการใช้ kdiff3 ที่ติดตั้งบน Windows 10 เป็นเครื่องมือ diff / merge สำหรับ git ใน WSL:
- เพิ่มไดเร็กทอรีการติดตั้ง kdiff3 ไปยังเส้นทาง Windows
- เพิ่ม TMP ให้กับตัวแปรสภาพแวดล้อม WSLENV Windows (WSLENV = TMP / up) TMP dir จะถูกใช้โดย git สำหรับไฟล์ชั่วคราวเช่นการแก้ไขไฟล์ก่อนหน้าดังนั้นพา ธ ต้องอยู่ในระบบไฟล์ windows เพื่อให้การทำงานนี้
- ตั้งค่า TMPDIR เป็น TMP ใน. bashrc:
# If TMP is passed via WSLENV then use it as TMPDIR
[[ ! -z "$WSLENV" && ! -z "$TMP" ]] && export TMPDIR=$TMP
- แปลง unix-path เป็น windows-path เมื่อเรียก kdiff3 ตัวอย่างของ. gitconfig ของฉัน:
[merge]
renormalize = true
guitool = kdiff3
[diff]
tool = kdiff3
[difftool]
prompt = false
[difftool "kdiff3"]
#path = kdiff3.exe
# Unix style paths must be converted to windows path style by changing '/mnt/c/' or '/c/' to 'c:/'
cmd = kdiff3.exe \"`echo $LOCAL | sed 's_^\\(/mnt\\)\\?/\\([a-z]\\)/_\\2:/_'`\" \"`echo $REMOTE | sed 's_^\\(/mnt\\)\\?/\\([a-z]\\)/_\\2:/_'`\"
trustExitCode = false
[mergetool]
keepBackup = false
prompt = false
[mergetool "kdiff3"]
path = kdiff3.exe
trustExitCode = false