ฉันสร้างที่เก็บ Git โดยใช้ gitolite ตอนนี้ฉันต้องการเปลี่ยนชื่อที่เก็บนั้น
ฉันจะทำเช่นนี้ได้อย่างไร?
ใน readme ของ gitolite บอกว่าฉันไม่ควรทำงานบนเซิร์ฟเวอร์โดยตรง แต่ฉันเดาว่าฉันต้องทำงานบนเซิร์ฟเวอร์ในกรณีนี้ใช่มั้ย?
ฉันสร้างที่เก็บ Git โดยใช้ gitolite ตอนนี้ฉันต้องการเปลี่ยนชื่อที่เก็บนั้น
ฉันจะทำเช่นนี้ได้อย่างไร?
ใน readme ของ gitolite บอกว่าฉันไม่ควรทำงานบนเซิร์ฟเวอร์โดยตรง แต่ฉันเดาว่าฉันต้องทำงานบนเซิร์ฟเวอร์ในกรณีนี้ใช่มั้ย?
คำตอบ:
ตามที่ระบุไว้ในคู่มือgitolite basic-admin :
สิ่งนี้คล้ายกัน gitolite
มีรหัสการทำเช่นนี้ไม่มี สิ่งที่คุณทำคือ:
เข้าสู่ระบบเซิร์ฟเวอร์cd $REPO_BASE
(ค่าเริ่มต้น:) cd ~/repositories
และ
mv old-name.git new-name.git
ย้อนกลับไปใน gitolite ผู้ดูแลระบบโคลนของคุณแก้ไขconf/gitolite.conf
และแทนที่เกิดขึ้นทั้งหมดด้วยold-name
new-name
จากนั้นเพิ่มคอมมิตและพุชตามปกติ
ลำดับของ 2 ขั้นตอนนี้มีความสำคัญ อย่าย้อนกลับ :-)
ขั้นตอนที่สามจำเป็นสำหรับ gitolite3:
gl-conf
ใน repo และเปลี่ยนชื่อที่เก็บเป็นชื่อใหม่และแน่นอนผู้ใช้ทุกคนควรอัปเดตการกำหนดค่าโคลนของตนให้ชี้ไปที่ชื่อ repo ใหม่
gl-conf
และเปลี่ยนชื่อที่เก็บด้วย
git remote set-url git@your.server:new-name.git
จากนั้นทำgit fetch
เพื่อให้แน่ใจว่าไม่มีข้อผิดพลาด
rm -r new-name.git
ก่อนmv
คำสั่ง
ฉันไม่คุ้นเคยกับ gitolite เป็นพิเศษ แต่วิธีหนึ่งที่อาจได้ผลคือการสร้างที่เก็บใหม่โดยใช้ชื่อที่ถูกต้องดันโค้ดของคุณไปที่อันนั้นแล้วลบอันเก่า
การใช้ Greg Hewgill เป็นแนวคิดคุณสามารถเปลี่ยนชื่อที่เก็บในไฟล์ config ได้ คุณอาจต้องการลองใช้ที่เก็บข้อมูลจำลองก่อน ความสงสัยของฉันคือชื่อเก่าจะถูกลบชื่อใหม่จะถูกสร้างขึ้นและคุณต้องอัปเดตต้นกำเนิดของคุณในเครื่องจากนั้นกด
แนวทางที่สะอาดคือการสร้างที่เก็บใหม่เป็นที่ว่างจากนั้นทำสิ่งต่อไปนี้:
สมมติว่าเก่าคือเก่าและใหม่ (ว่างเปล่า) คือใหม่:
# mkdir /tmp/1
# cd /tmp/1
# git clone OLD_REPO old
# git clone NEW_REPO new
# cd new
# git pull ../old
# git push origin master
หรือคุณสามารถใช้ repo ระยะไกลโดยตรงสำหรับ OLD:
# mkdir /tmp/1
# cd /tmp/1
# git clone NEW_REPO new
# cd new
# git pull OLD_REPO
# git push origin master
สิ่งนี้จะเก็บประวัติทั้งหมดไว้และจะปล่อยให้ gitolite จัดการภายในของมัน นอกจากนี้คุณจะต้องอัปเดต gitolite-admin แต่ไม่มีข้อ จำกัด ในการสั่งซื้อ
นอกจากนี้ยังใช้งานได้จากระยะไกลโดยไม่มีปัญหา
การลบที่เก็บ OLD ควรทำตามคำแนะนำของ gitolite (ในเครื่อง)