แปลง git https path สำหรับ go get

Teerayut Hiruntaraporn
1 min readAug 21, 2022

--

ปกติแล้ว 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 ผิดก็พอ

--

--

Teerayut Hiruntaraporn
Teerayut Hiruntaraporn

No responses yet