กลับมาใช้ git-svn clone


117

ฉันเริ่มโคลนที่เก็บ SVN โดยใช้การดำเนินการโคลนของ git-svn หลังจากนำเข้าประมาณ 6 ชั่วโมง (เป็น repo ครั้งใหญ่) คอมพิวเตอร์ของฉันก็เข้ามานอนกับฉัน มีวิธีดำเนินการต่อโดยไม่ต้องทำซ้ำงานเริ่มต้นทั้งหมดหรือไม่?

คำตอบ:


156

git svn fetchคำสั่งที่จะกลับมาgit svn cloneได้รับการยืนยันจากหลายแหล่งที่มา:

(อนึ่งหากในระหว่างขั้นตอนการโคลนเริ่มต้นการเชื่อมต่อของคุณเสียชีวิตหรือคุณจำเป็นต้องหยุดการโคลนเพื่อดำเนินการโคลนต่อคุณเพียงแค่เรียกใช้คำสั่งด้านบนเพื่อดาวน์โหลดประวัติต่อ)

ดูเหมือนจะมีหน่วยความจำรั่วเข้าgit-svnมา ขนาดของgit-svnกระบวนการเติบโตอย่างช้าๆและหลังจากนั้นประมาณสองสัปดาห์มันก็อยู่ที่ขนาด 1.2 GB ที่อาศัยอยู่ซึ่งเมื่อถึงจุดนั้นระบบปฏิบัติการก็ไม่ยอมปล่อยให้มันแยกออก
นี่เป็นพรที่ปลอมตัว
ฉันสามารถกลับมาใช้งานโคลนที่ถูกขัดจังหวะต่อได้ด้วย "" ธรรมดา ๆgit svn fetchและมันก็วิ่งได้เร็วขึ้นมากด้วยฮีปที่เล็กลงอย่างสิ้นเชิง
สิ่งนี้ทำงานได้ดีมากที่จริงแล้วฉันมีนิสัยชอบขัดจังหวะและเริ่มกระบวนการใหม่ทุกเย็นและทุกเช้า ไม่กี่วันต่อมาก็เสร็จ

คุณเริ่มการผจญภัยของคุณด้วยการgit-svnโคลนที่เก็บการโค่นล้มที่มีอยู่:

git svn clone url://path/to/repo -s

-sธงสันนิษฐานว่าพื้นที่เก็บข้อมูลของคุณใช้ "ลำต้นกิ่งก้านแท็ก" การประชุม ถ้าไม่คุณต้องระบุด้วยตนเองว่าไดเรกทอรีใดเป็นตัวแทนของสาขาและแท็กหากคุณต้องการให้ Git ทราบเกี่ยวกับสิ่งเหล่านี้

การดำเนินการนี้จะใช้เวลานานเนื่องจากจะดึงข้อมูลการแก้ไขทุกครั้งจาก SVN และดำเนินการภายในเครื่อง ไม่ว่าด้วยเหตุผลใดก็ตามคุณสามารถดำเนินการต่อgit svn fetchได้


1
ผมคิดว่าบางส่วนของตัวเลือกบรรทัดคำสั่งที่ให้ไว้เพื่อgit svn cloneยังจำเป็นต้องมีการจัด (แล้วแต่กรณี) git svn fetchเพื่อ เช่นฉันได้ตั้งค่า-r HEADสำหรับการgit svn cloneจะได้รับเพียงการแก้ไข HEAD SVN เพื่อดำเนินการต่อฉันวิ่งgit svn fetchซึ่งเริ่มนำเข้าการแก้ไขทั้งหมด
amolbk

สิ่งนี้เริ่มต้นทุกอย่างตั้งแต่การแก้ไขครั้งแรก .... ฉันมี 10,000 คอมมิต! มีความคิดเกี่ยวกับวิธีดำเนินการต่อจากจุดที่ค้างไว้หรือไม่?
Nathan JB

@ NathanJ Brauer ไม่ได้อยู่บนหัวของฉัน คุณสามารถถามคำถามใหม่ได้ (โดยใช้ระบบปฏิบัติการเวอร์ชัน git และเวอร์ชัน svn และลิงก์กลับไปที่คำตอบนี้สำหรับบริบท)
VonC

1
ฉันบังเอิญฆ่าการเชื่อมต่อเครือข่ายของฉันในระหว่างการgit svn cloneขัดจังหวะกระบวนการ การเรียกใช้git svn cloneอีกครั้งดูเหมือนจะดำเนินการต่อการโคลน มีใครทำแบบนี้อีกไหม
Kehlan Krumme

1
@Kehlan เห็นได้ชัดว่าถ้าคุณพิจารณาคำตอบของ zan-xhipe ด้านล่าง
VonC

17

ฉันพบบล็อกโพสต์ที่ให้สิ่งที่ (ฉันหวังว่า) เป็นคำตอบที่ถูกต้อง

เห็นได้ชัดว่าการรันgit svn fetchอย่างมีประสิทธิภาพจะทำให้การดำเนินการโคลนเสร็จสมบูรณ์ หวัง!


7
คุณจะต้องใช้git svn rebaseหลังจากการดึงข้อมูลเพื่อให้การดำเนินการเสร็จสมบูรณ์และมีสาขาหลักที่สะท้อนลำต้น
Romuald Brunet

คุณสามารถให้ลิงก์ไปยังบทความในบล็อกเพื่อใช้อ้างอิงในอนาคตได้หรือไม่
jmanning2k

6

ในฐานะ VonC CaptainAwesomePants และ Archi ต่างgit svn fetchก็กล่าวว่าเป็นเคล็ดลับ ฉันกำลังทำ a git svn clone url... --authors-file=path/to/fileและการโคลนล้มเหลวเนื่องจากผู้เขียนคนหนึ่งไม่ได้อยู่ในไฟล์ผู้เขียน ฉันเพิ่มผู้เขียนลงในไฟล์และเรียกใช้git svn fetchและดำเนินการต่อจากจุดที่ค้างไว้และดูที่บันทึกคอมไพล์ในภายหลังดูเหมือนว่าจะใช้ผู้เขียนที่เพิ่มใหม่เพื่อแทนที่ชื่อผู้เขียนคอมมิตดังนั้นทุกอย่างจึงดูดี


5

จาก git อย่างน้อย 2.1.0 คุณสามารถดำเนินการต่อได้โดยการออกใหม่ git svn clone

อย่างไรก็ตามสิ่งนี้จะทำซ้ำบางรายการใน. git / config ของคุณลบรายการเหล่านั้นและทุกอย่างจะดี


From at least git 2.1.0...มีความคิดว่าคุณลักษณะนี้มีอยู่ที่ git 1.9.1 หรือไม่?
CivFan

ขออภัยฉันไม่มีที่เก็บ svn ให้ลองใช้อีกต่อไป
zan-xhipe

git svn fetchทำให้การตรวจสอบไม่ตรงกันสำหรับฉัน - และเป็นไปไม่ได้ที่จะรีเซ็ตเนื่องจากเห็นได้ชัดว่าไม่มี HEAD: / - แต่ใช้งานได้ดีเพียงแค่ลบsvn-remote.fetchจาก.git/config
OLL
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.