โฮสต์ Git Annex บนเซิร์ฟเวอร์โดยไม่ต้องติดตั้ง git-annex


9

Machines A and B โฮสต์ที่เก็บgit annexทั่วไป พวกเขาทั้งสองมีการติดตั้งโปรแกรมgit-annexและฉันเองแก้ไข / กระทำ / ฯลฯ สิ่งบนเครื่องทั้งสอง A & B ไม่ได้เชื่อมต่อกับอินเทอร์เน็ตในเวลาเดียวกันดังนั้นจึงไม่สามารถซิงค์ด้วยกันโดยตรง

เซิร์ฟเวอร์ C เปิดและเชื่อมต่ออยู่เสมอ (และฟรีและปลอดภัยมาก) ติดตั้ง git แล้ว แต่ฉันไม่มีสิทธิ์ของผู้ดูแลระบบดังนั้นฉันจึงไม่สามารถติดตั้ง git-annex ได้

คำถามของฉัน: ฉันสามารถใช้ Server C เป็นฮับกลางเพื่อผลักดันและดึงการปรับปรุง git-annex จากทั้ง A และ B โดยไม่ต้องติดตั้ง git-annex และการพึ่งพา haskell ghc ทั้งหมดบน C?

ฉันพยายามใช้ C พร้อมรีโมตพิเศษ "directory" หรือ "rsync" แต่ดูเหมือนว่าจะเก็บเฉพาะไฟล์เท่านั้นไม่ใช่สิ่งที่เหลือสำหรับการอัปเดต A และ B หลังจากกด / ดึง

คำใบ้ใด ๆ ที่จะได้รับการชื่นชมมาก!

คำตอบ:


6

ด้วยการเข้าถึง git และ rsync ไปยังเซิร์ฟเวอร์เดียวกันคุณสามารถใช้เซิร์ฟเวอร์นั้นเพื่อเก็บประวัติ (ผ่านการเข้าถึง git) และที่เก็บคีย์ - ค่าภาคผนวก (ผ่านการเข้าถึง rsync) สิ่งเหล่านี้อาจถูกแยกออกและเก็บไว้ในเซิร์ฟเวอร์ต่าง ๆ จำนวนเท่าใดก็ได้

ดูเหมือนว่าคุณได้อ่านเครื่องมือทั้งหมดที่คุณต้องการแล้ว โดยพื้นฐานแล้วคุณจะจบด้วยรีโมท 2 ตัวแยกกันซึ่งทั้งคู่ชี้ไปยังตำแหน่งต่างๆบนเซิร์ฟเวอร์ -c รีโมตแรก (เซิร์ฟเวอร์ - c) เป็นรีโมต git ปกติสำหรับการซิงโครไนซ์ประวัติของคุณและทุกสิ่งที่ถูกตรวจสอบโดยตรงไปยัง repo git รีโมตที่สองเป็นรีโมตพิเศษภาคผนวก

[remote "server-c"]
    url = git@example.com:/path/to/repo.git
    fetch = +refs/heads/*:refs/remotes/server-c/*
[remote "server-c-rsync"]
    annex-rsyncurl = example.com:/home/user/annex-rsync
    annex-uuid = ...

คุณควรจะสามารถตั้งค่านี้กับบางสิ่งตามแนวของ:

git remote add server-c git@example.com:/path/to/repo.git
git annex initremote server-c-rsync type=rsync rsyncurl=example.com:/home/user/annex-rsync encryption=none

สิ่งนี้จะช่วยให้คุณได้รับฟังก์ชั่นพื้นฐานที่คุณต้องการ ข้อเสียเพียงอย่างเดียวคือคุณมีชื่อระยะไกล 2 ชื่อที่ชี้ไปยังเซิร์ฟเวอร์เดียวกัน โดยเฉพาะอย่างยิ่งคุณต้องจำไว้ว่าให้ใช้รีโมตพิเศษ (เซิร์ฟเวอร์ -c-rsync) เมื่อใช้ --to = หรือ - from = อาร์กิวเมนต์ของการรับคัดลอกและย้าย

อาจเป็นไปได้ที่จะชี้รีโมตเดียวไปยังที่ตั้งทั้งสองแห่งอย่างไรก็ตามฉันไม่แน่ใจว่าได้รับการสนับสนุนจริงหรือไม่ คำสั่งต่อไปนี้ปรากฏขึ้นเพื่อสร้าง. git / config ที่สมเหตุสมผล

git init
git annex init "test"
git remote add server-c git@example.com:/path/to/repo.git
git annex initremote server-c type=rsync rsyncurl=example.com:/rsync/user encryption=none

สำหรับฉันแล้วผลลัพธ์นี้ในรีโมทเดียวใน. git / config พร้อมทั้ง url = (สำหรับการดำเนินการ git ปกติ) และ annex-rsyncurl = อย่างไรก็ตามฉันยังไม่ได้ทดสอบสิ่งนี้เพิ่มเติมเพื่อให้แน่ใจว่า git annex ละเว้น URL และใช้เฉพาะรายการ annex-rsyncurl เมื่อใช้งานกับไฟล์ที่ผนวก


ที่ดี! ฉันจะทำการทดสอบบางอย่าง แต่สิ่งนี้ควรทำให้ฉันใกล้เคียงกับโซลูชันที่ใช้การได้ ขอบคุณมากสำหรับเวลาและคำตอบของคุณ!
Vincent

ดีใจที่ฉันสามารถช่วย ฉันเพิ่งเริ่มใช้ git ภาคผนวกตัวเองในช่วงวันหยุดและจนถึงตอนนี้ฉันมีความสุขมากกับมัน!
Justin Geibel

ฉันคิดว่าตัวอย่างสุดท้ายควรจะได้ผล ในความเป็นจริงผมคิดว่ามันจะ rsync ไฟล์ในสถานที่ถึงแม้ว่ามันจะเป็นเพียง repo คอมไพล์เปลือย ...
anarcat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.