ชำระเงินสาขาระยะไกลโดยใช้ git svn


188

ฉันได้ตรวจสอบพื้นที่เก็บข้อมูล svn โดยใช้ git svn ตอนนี้ฉันต้องชำระเงินหนึ่งในสาขาและติดตาม วิธีไหนดีที่สุดที่จะทำ

คำตอบ:


355

รูปแบบการโค่นล้มมาตรฐาน

สร้างโคลนคอมไพล์ของที่มีลำต้นการโค่นล้มแท็กและสาขาด้วย

git svn clone http://svn.example.com/project -T trunk -b branch -t แท็ก

--stdlayoutตัวเลือกที่เป็นทางลัดที่ดีถ้าพื้นที่เก็บข้อมูลการโค่นล้มของคุณใช้โครงสร้างทั่วไป:

git svn clone http://svn.example.com/project --stdlayout

ทำให้ที่เก็บ git ของคุณเพิกเฉยต่อทุกสิ่งที่ repo การโค่นล้มทำ:

git svn แสดง - ละเว้น >> .git / ข้อมูล / ไม่รวม

ตอนนี้คุณควรจะเห็นการโค่นล้มสาขาทั้งหมดที่ด้าน git:

git branch -r

waldoพูดชื่อของสาขาในการโค่นล้มเป็น ในด้านคอมไพล์คุณจะต้องวิ่ง

git checkout -b waldo-svn รีโมท / waldo

ส่วนต่อท้าย -svn คือการหลีกเลี่ยงคำเตือนของแบบฟอร์ม

คำเตือน: refname 'waldo' ไม่ชัดเจน

หากต้องการอัปเดตสาขา git waldo-svnให้เรียกใช้

git checkout waldo-svn
git svn rebase

เริ่มต้นจากการเช็คเอาต์แบบลำตัวเท่านั้น

หากต้องการเพิ่มสาขาการโค่นล้มลงในโคลนแบบ trunk-only ให้แก้ไขที่เก็บ git ของคุณ.git/configเพื่อบรรจุ

[svn-remote "svn-mybranch"]
        url = http://svn.example.com/project/branches/mybranch
        fetch =: refs / remotes / mybranch

คุณจะต้องพัฒนานิสัยการวิ่ง

git svn fetch --fetch-all

เพื่ออัปเดตสิ่งที่git svnคิดว่าเป็นรีโมตแยกทั้งหมด ณ จุดนี้คุณสามารถสร้างและติดตามสาขาดังกล่าวได้ ตัวอย่างเช่นหากต้องการสร้างสาขา git ที่สอดคล้องกับ mybranch ให้รัน

git checkout -b mybranch-svn รีโมต / mybranch

สำหรับสาขาที่คุณตั้งใจจะgit svn dcommitรักษาประวัติของพวกเขาเป็นเส้นตรง!


ข้อมูลเพิ่มเติม

นอกจากนี้คุณยังอาจจะสนใจในการอ่านคำตอบของคำถามที่เกี่ยวข้อง


สิ่งนี้ไม่ได้ผลสำหรับฉันเนื่องจากฉันได้ตรวจสอบลำตัวโดยใช้ git svn clone .. ฉันไม่ได้ตั้งสาขาที่จะเช็คเอาท์ ... ฉันคิดว่าฉันต้องเริ่มต้นก่อน
markovuksanovic

ความจริงก็คือฉันใช้ git svn clone svn.example.com/project/trunk และตอนนี้ฉันไม่ทราบวิธีตั้งสาขาอื่น ๆ ที่จะถูกติดตามโดยไม่สูญเสีย repo ปัจจุบันของฉัน ...
markovuksanovic

20
ฉันขอแนะนำให้ใส่คำนำหน้าสำหรับรีโมท svn ของคุณ (เพิ่ม--prefix=svn/เมื่อทำgit-svn initหรือgit-svn clone) สิ่งนี้จะช่วยลดความจำเป็นในการเพิ่มคำต่อท้ายในสาขาท้องถิ่นของคุณ
jasonkarns

หากคุณมีหลายสาขาอย่าลืมที่จะทำ "git checkout master" ก่อนที่จะดูแลสาขาอื่น
Eildosa

หากเกิดshow-ignoreข้อผิดพลาดลองgit svn show-ignore -i trunk
Antti Haapala
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.