การใช้ Git & SVN โดยมี Git เป็นเซิร์ฟเวอร์กลาง

บริษัทของฉันใช้ Git สำหรับการควบคุมเวอร์ชัน แต่เรากำลังทำงานในโปรเจ็กต์ร่วมกับบริษัทอื่นที่ใช้ SVN (พวกเขาปฏิเสธที่จะใช้ Git) ฉันต้องตั้งค่าเซิร์ฟเวอร์ Git ของเราเป็นเซิร์ฟเวอร์กลางและให้สิทธิ์การเข้าถึง SVN แก่เซิร์ฟเวอร์นั้น ฉันรู้ว่า git-svn ใช้งานได้ดีกับการใช้ Git ในขณะที่ SVN เป็นเซิร์ฟเวอร์กลาง แต่ฉันจะให้ SVN เข้าถึงพื้นที่เก็บข้อมูล Git ได้อย่างไร

หมายเหตุ: ฉันเห็นว่า Github กำลังให้ SVN เข้าถึงที่เก็บ Git ของพวกเขาแล้ว ไม่มีใครรู้ว่าพวกเขาทำมันได้อย่างไร?


person kelloti    schedule 17.12.2010    source แหล่งที่มา
comment
Github ใช้เกตเวย์ SVN-to-Git ที่พัฒนาขึ้นภายใน จนถึงตอนนี้พวกเขาเงียบเกี่ยวกับการเปิดเผยแหล่งที่มา ฉันสงสัยว่าพวกเขาจะ   -  person cdhowie    schedule 17.12.2010
comment
พื้นหลังเพิ่มเติมอีกเล็กน้อย: เรากำลังใช้ gitolite สำหรับเซิร์ฟเวอร์ git บางทีบางคนควรยื่นคำร้อง/ช่วยเหลือ gitolite เพื่อหาวิธีแก้ปัญหา?   -  person kelloti    schedule 17.12.2010
comment
เห็นได้ชัดว่านี่ไม่ใช่คำตอบที่ถูกต้อง แต่ฉันจะบอกพวกเขาว่า Tough #$@! คุณกำลังใช้ git สำหรับโปรเจ็กต์นี้   -  person haydenmuhl    schedule 17.12.2010
comment
@haydenmuhl - ฉันชอบมัน! น่าเสียดายที่ฉันไม่คิดว่ามันจะใช้ไม่ได้   -  person kelloti    schedule 17.12.2010
comment
ไม่ว่าพวกเขากำลังใช้คอมไพล์หรือไม่ได้รับรางวัลตามสัญญา   -  person user502515    schedule 17.12.2010


คำตอบ (3)


ได้ คุณสามารถใช้ SubGit:

สร้างที่เก็บ SVN ที่ว่างเปล่า

$ svnadmin create path/for/svn/repository

กำหนดค่าให้เชื่อมโยงกับพื้นที่เก็บข้อมูล Git ของคุณโดยใช้ SubGit:

$ subgit configure path/for/svn/repository
$ #edit path/for/svn/repository/conf/subgit.conf to set git.default.repository (absolute or relative path to your bare Git repository)

เริ่มการซิงโครไนซ์อย่างต่อเนื่อง:

$ subgit install path/for/svn/repository

ทั้งอินเทอร์เฟซ SVN และ Git จะสามารถอ่านและเขียนได้

อย่างที่ฉันรู้ GitHub ใช้แนวทางอื่น: พวกเขาใช้อินเทอร์เฟซ SVN ที่เข้าถึง Git ได้ทันที วิธีการนี้มีข้อดีและข้อเสียในตัวเอง

person Dmitry Pavlenko    schedule 22.08.2012
comment
นั่นเป็นตัวเลือกที่ดี ฉันหวังว่ามันจะใช้ได้เมื่อ 1.5 ปีที่แล้ว :( - person kelloti; 22.08.2012

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

person Noufal Ibrahim    schedule 17.12.2010
comment
ใช่ ฉันคิดว่าจะใช้ hooks เพื่อซิงค์ SVN และ git แต่ดูเหมือนว่าจะเกิดข้อผิดพลาดได้ง่ายมาก ดังนั้นฉันจึงหวังว่าจะมีคนมีประสบการณ์ในการทำเช่นนั้น - person kelloti; 17.12.2010
comment
คุณมีปัญหาแปลก ๆ ดังนั้น... :) - person Noufal Ibrahim; 17.12.2010

ตกลง ฉันจะตอบคำถามของตัวเองด้วยคำตอบที่ไม่ดีแต่เป็นไปได้ (imo) ฉันสามารถใช้ไฟล์แพทช์มาตรฐานเพื่อส่งการเปลี่ยนแปลงระหว่างสองบริษัทของเราได้ ผู้จัดการของฉันเชื่อว่านี่เป็นวิธีแก้ปัญหาที่ยอมรับได้ แต่ฉันไม่ชอบมันเลย


แก้ไข: เพื่อตอบสนองต่อ Noufal Ibrahim ฉันคิดว่าการใช้ Tailor ร่วมกับ hook scripts ฉันอาจมีจริงๆ โซลูชันอัตโนมัติที่อาจใช้งานได้จริง บล็อกนี้มี คำอธิบายที่ยอดเยี่ยมสำหรับการใช้ Tailor เพื่อตั้งค่ามิเรอร์ SVN

person kelloti    schedule 17.12.2010
comment
ก็มีทั้ง ผ้านวม และ Tailor ซึ่งอาจทำให้ชีวิตของคุณง่ายขึ้นนิดหน่อย - person Noufal Ibrahim; 17.12.2010