SubGit (เทียบกับ Blue Screen of Death)
subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
มันคือทั้งหมดที่
+ หากต้องการอัปเดตจาก SVN ที่เก็บ Git ที่สร้างโดยคำสั่งแรก
subgit import directory/path/Local.git.Repo
ฉันใช้วิธีการโยกย้ายไปยัง Git ทันทีสำหรับพื้นที่เก็บข้อมูลขนาดใหญ่
แน่นอนคุณต้องเตรียมการบางอย่าง
แต่คุณอาจไม่หยุดกระบวนการพัฒนาเลย
นี่คือวิธีของฉัน
โซลูชันของฉันดูเหมือนว่า:
- โอนย้าย SVN ไปยังที่เก็บ Git
- อัพเดทพื้นที่เก็บข้อมูล Git ก่อนเปลี่ยนทีมไป
การโอนย้ายใช้เวลานานสำหรับที่เก็บ SVN ขนาดใหญ่
แต่การอัปเดตการย้ายข้อมูลเสร็จสมบูรณ์เพียงไม่กี่วินาที
แน่นอนฉันใช้SubGitแม่ Git-SVN ทำให้ฉันหน้าจอสีฟ้าแห่งความตาย เพียงแค่ตลอดเวลา และ git-svn ทำให้ฉันเบื่อด้วยข้อผิดพลาดร้ายแรง" ชื่อไฟล์ที่ยาวเกินไป " ของ Git
ขั้นตอน
1. ดาวน์โหลด SubGit
2.เตรียมคำสั่งโยกย้ายและอัปเดต
สมมติว่าเราทำเพื่อ Windows (มันเป็นเรื่องไม่สำคัญที่จะพอร์ตไปยัง Linux)
ในไดเรกทอรีbinการติดตั้งของ SubGit (subgit-2.XX \ bin) ให้สร้างไฟล์. bat สองไฟล์
เนื้อหาของไฟล์ / คำสั่งสำหรับการย้ายข้อมูล:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
คำสั่ง "start" เป็นทางเลือกที่นี่ (Windows) มันจะช่วยให้เห็นข้อผิดพลาดในการเริ่มต้นและเปิดเปลือกทิ้งไว้หลังจากเสร็จสิ้น SubGit
คุณอาจจะเพิ่มที่นี่พารามิเตอร์เพิ่มเติมคล้ายกับ Git-SVN ฉันใช้--default-domain myCompanyDomain.comเพื่อแก้ไขโดเมนของที่อยู่อีเมลของผู้เขียน SVN
ฉันมีโครงสร้างของที่เก็บ SVN มาตรฐาน (trunk / กิ่ง / แท็ก) และเราไม่มีปัญหากับ "การแมปผู้เขียน" ดังนั้นฉันจะไม่ทำอะไรอีกแล้ว
(ถ้าคุณต้องการที่จะแท็กโยกย้ายเช่นสาขาหรือ SVN ของคุณมีหลายสาขา / โฟลเดอร์แท็กคุณอาจพิจารณาที่จะใช้มากขึ้นอย่างละเอียด SubGit วิธีการ )
เคล็ดลับที่ 1 : ใช้ - สุดยอด YourSvnRevNumber แก้ไขเพื่อดูว่าสิ่งที่เดือดออก (การดีบักบางชนิด) อย่างรวดเร็ว มีประโยชน์อย่างยิ่งคือการดูชื่อผู้แต่งหรืออีเมลที่ได้รับการแก้ไข
หรือเพื่อ จำกัด ความลึกประวัติการโยกย้าย
เคล็ดลับที่ 2 : การย้ายข้อมูลอาจถูกขัดจังหวะ ( Ctrl+ C) และเรียกคืนโดยการเรียกใช้คำสั่ง / ไฟล์การอัปเดตถัดไป
ฉันไม่แนะนำให้ทำเช่นนี้กับที่เก็บข้อมูลขนาดใหญ่ ฉันได้รับ "ข้อยกเว้น Java + Windows หน่วยความจำไม่เพียงพอ"
เคล็ดลับ 3 : ดีกว่าเพื่อสร้างสำเนาของที่เก็บผลลัพธ์เปลือยของคุณ
เนื้อหาของไฟล์ / คำสั่งสำหรับการอัพเดต:
start subgit import directory/path/Local.git.Repo
คุณสามารถเรียกใช้ได้ทุกครั้งที่คุณต้องการรับความมุ่งมั่นของทีมสุดท้ายในที่เก็บ Git ของคุณ
คำเตือน! อย่าแตะต้องพื้นที่เก็บข้อมูลเปล่า (เช่นการสร้างสาขา)
คุณจะได้รับข้อผิดพลาดร้ายแรงต่อไป:
ข้อผิดพลาดที่ไม่สามารถกู้คืนได้: ขาดการซิงค์และไม่สามารถซิงค์ ... การแปลการโค่นล้มการแก้ไขเป็น Git กระทำ ...
3.เรียกใช้คำสั่ง / ไฟล์แรก มันจะใช้เวลา loooong สำหรับพื้นที่เก็บข้อมูลขนาดใหญ่ 30 ชั่วโมงสำหรับพื้นที่เก็บข้อมูลต่ำต้อยของฉัน
มันคือทั้งหมดที่
คุณสามารถอัปเดตที่เก็บ Git ของคุณจาก SVN ได้ทุกเวลาโดยเรียกใช้ไฟล์ / คำสั่งที่สอง และก่อนที่จะเปลี่ยนทีมพัฒนาของคุณเป็น Git
มันจะใช้เวลาเพียงไม่กี่วินาที
มีงานที่มีประโยชน์มากกว่าหนึ่งรายการ
ผลักดันที่เก็บ Git ในพื้นที่ของคุณไปยังที่เก็บ Git ระยะไกล
เป็นกรณีของคุณหรือไม่ มาเริ่มกันเลยดีกว่า
- กำหนดค่ารีโมทของคุณ
วิ่ง:
$ git remote add origin url://your/repo.git
- เตรียมที่จะส่งเริ่มต้นของพื้นที่เก็บข้อมูล Git ขนาดใหญ่ของคุณไปยังพื้นที่เก็บข้อมูลระยะไกล
โดยค่าเริ่มต้น Git ของคุณไม่สามารถส่งชิ้นใหญ่
ร้ายแรง: ปลายระยะไกลวางสายโดยไม่คาดคิด
มาวิ่งกันเถอะ:
git config --global http.postBuffer 1073741824
524288000 - 500 MB 1073741824 - 1 GB และอื่น ๆ
แก้ไขในท้องถิ่นของคุณปัญหาใบรับรอง หากเซิร์ฟเวอร์ git ของคุณใช้ใบรับรองที่ใช้งานไม่ได้
ฉันมีคนพิการใบรับรอง
นอกจากนี้ยังเซิร์ฟเวอร์ Git ของคุณอาจจะมีจำนวนคำขอข้อ จำกัด จำเป็นต้องได้รับการแก้ไข
- พุชการโยกย้ายทั้งหมดไปยังที่เก็บ Git ระยะไกลของทีม
ทำงานกับ Git ท้องถิ่น:
git push origin --mirror
( ต้นกำเนิด git push '*: *'สำหรับ Git เวอร์ชั่นเก่า)
หากคุณได้รับสิ่งต่อไปนี้: ข้อผิดพลาด: ไม่สามารถวางไข่คอมไพล์: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว ... สำหรับฉันการเก็บข้อมูลทั้งหมดของฉันช่วยฉันแก้ไขข้อผิดพลาดนี้ (30 ชั่วโมง) คุณสามารถลองคำสั่งต่อไป
git push origin --all
git push origin --tags
หรือลองติดตั้ง Git ใหม่ ( ไร้ประโยชน์สำหรับฉัน ) หรือคุณอาจสร้างสาขาจากแท็กทั้งหมดและผลักพวกเขา หรือหรือหรือ ...