git-sync - เครื่องมือ CLI สำหรับมิเรอร์ ref ระหว่าง Git รีโมตโดยตรงโดยไม่ต้องเช็กเอาต์ในเครื่อง
(github.com/entireio)- ไม่ต้องมี local clone สามารถสตรีม ref และออบเจ็กต์จาก source remote ไปยัง target remote ได้โดยตรง โดยไม่เช็กเอาต์รีโพซิทอรีลงดิสก์ในเครื่อง
- ใช้ เส้นทางส่งต่อแบบ Relay เพื่อส่งข้อมูลแพ็กจาก
upload-packของต้นทางไปยังreceive-packของปลายทางได้ทันที ทำให้การใช้หน่วยความจำคงที่ไม่ว่าขนาดรีโพซิทอรีจะใหญ่แค่ไหน - หากไม่สามารถใช้ relay ได้ (เช่น force, prune, delete) จะใช้ Materialized fallback โดย fetch ออบเจ็กต์เข้าไปยังสโตร์
go-gitแบบ in-memory จากนั้นเข้ารหัส packfile และ push โดยสามารถจำกัดหน่วยความจำด้วย--materialized-max-objects - ใช้เพียง
git-sync syncคำสั่งเดียวเพื่อจัดการได้ตั้งแต่ การ seed เป้าหมายที่ว่างเปล่าในครั้งแรกไปจนถึงการซิงก์อย่างต่อเนื่อง และสามารถพรีวิวก่อน push ได้ด้วยgit-sync plan git-sync replicateเป็นโหมดเข้มงวดที่ทำให้ target ref ตรงกับ source อย่างสมบูรณ์ แต่จะถือว่า ล้มเหลวหากจำเป็นต้อง materialize ในเครื่อง- รองรับ การจัดการ ref ทุกแบบ ทั้งการสร้าง ref, การอัปเดต, การบังคับอัปเดตด้วย
--force, การลบด้วย--pruneเป็นต้น - วางแผนทุกแอ็กชันก่อน push และให้ ผลลัพธ์ JSON แบบมีชนิดข้อมูล จึงเชื่อมต่อเข้ากับ CI/ระบบอัตโนมัติได้ทันที
- สามารถฝังใช้งานเป็นไลบรารี Go ได้เช่นกัน พร้อม API แบบเสถียร อย่าง
Probe,Plan,Sync,Replicate - รองรับเฉพาะแบบทางเดียว, ไม่รองรับ SSH (รองรับเฉพาะ Smart HTTP/HTTPS), ไม่มีความสามารถแบบเดมอน/เฝ้าดู และทำงานแบบรันครั้งเดียว
- ไลเซนส์ MIT
1 ความคิดเห็น
คงทำขึ้นมาเพราะ
worktreeกำลังฮิตสินะ เดี๋ยวต้องลองใช้ดู!