แปลง git https path สำหรับ go get
ปกติแล้ว golang มักจะให้ ใส่ module ในรูปของ url ของ git origin url เช่น ใน github ก็จะใช้ ประมาณว่า
import github.com/nats-io/nats.go
ตอนที่จะใช้งาน ก็จะไป fetch ไปที่ https://github.com/nats-io/nats.go โดยอัติโนมัติ
อย่างไรก็ตาม ในบางกรณี เราอาจจะไม่สามารถใช้ path ที่เป็น https ได้ อาจจะด้วยสาเหตุของ 2-factor authentication หรือ อื่นๆ
อีกทางเลือกหนึ่งคือการใช้ผ่าน ssh โดยวิ่งไปที่
git@github.com:nats-io/nats.go.git
แล้วเราจะปรับ path ที่เรียก จาก https เป็น ssh ได้อย่างไร
ในตอนนี้ภายใน golang เองยังไม่แน่ใจทางที่ปรับได้สักเท่าไหร่
แต่เราสามารถปรับได้จาก คำสั่งใน ตัวของ git เอง โดยใช้คำสั่งดังนี้
git config --global --add url."<ssh-prefix>".insteadOf"<https-prefix>"
จริงๆแล้วคำสั่งนี้เป็นเหมือนการ replace คำๆ นึงไปสู่คำๆ หนึ่งนั่นเอง โดยในที่นี้จะแปลง คำที่เป็น https-prefix
ให้เป็น ssh-prefix
ในกรณีของ github อยากให้เอา path มาเทียบกันดูจะได้ดังนี้
https://github.com/nats-io/nats.go
git@github.com:nats-io/nats.go.git
เพื่อที่จะทำให้เราปรับ path ให้ครบ ดังนั้นเราจะได้ว่า
https-prefix จะเป็น https://github.com/
(มี / ต่อท้ายด้วย)
ssh-prefix จะเป็น git@github.com:
(มี : ต่อท้ายด้วย )
ก็จะได้ว่า
git config --global --add url."git@github.com:".insteadOf "https://github.com/"
ซึ่งถ้าเราต้องไปทำใน ssh ที่มี port ก็ใช้วิธีคิดแบบเดียวกันครับ คือ ใส่มาให้ครบ เช่น ถ้า ssh path เป็น git@personal-repo:1234/nats-io/nats.go เราจะได้เป็น
git config --global --add url."git@personal-repo:1234/".insteadOf "https://github.com/"
ผลลัพธ์ ที่ได้จะอยู่ใน ไฟล์ชื่อ .gitconfig โดยจะมีส่วนที่เพิ่มขึ้นมาประมาณนี้
[url "git@github.com:"]
insteadOf = https://github.com/
ซึ่งถ้าลองแสดงติดอะไร ก็สามารถมาปรับตรงนี้โดยตรงก็ได้ แต่ระวังอย่างให้ syntax ผิดก็พอ