ฉันจะเปลี่ยนชื่อที่เก็บ Git ที่สร้างด้วย gitolite ได้อย่างไร


85

ฉันสร้างที่เก็บ Git โดยใช้ gitolite ตอนนี้ฉันต้องการเปลี่ยนชื่อที่เก็บนั้น

ฉันจะทำเช่นนี้ได้อย่างไร?

ใน readme ของ gitolite บอกว่าฉันไม่ควรทำงานบนเซิร์ฟเวอร์โดยตรง แต่ฉันเดาว่าฉันต้องทำงานบนเซิร์ฟเวอร์ในกรณีนี้ใช่มั้ย?


คำถามที่ดีและขอบคุณสำหรับความคิดเห็นในคำตอบของฉัน วันนี้ฉันต้องการคำตอบนี้;)

คำตอบ:


135

ตามที่ระบุไว้ในคู่มือgitolite basic-admin :

การเปลี่ยนชื่อ repo

สิ่งนี้คล้ายกัน 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 ใหม่


7
ใน gitolite3 คุณต้องแก้ไขgl-confและเปลี่ยนชื่อที่เก็บด้วย
Fernando Correia

4
อย่าลืมตั้งค่า url ระยะไกลของสำเนา repo ในเครื่องของคุณเป็นชื่อใหม่: git remote set-url git@your.server:new-name.gitจากนั้นทำgit fetchเพื่อให้แน่ใจว่าไม่มีข้อผิดพลาด
cneuro

ฉันทำสองขั้นตอนแรกผิดลำดับก่อนจะถึงคำตอบนี้ ฉันยังใช้งานได้เพียงแค่ต้องทำrm -r new-name.gitก่อนmvคำสั่ง
Arnaud P

9

ฉันไม่คุ้นเคยกับ gitolite เป็นพิเศษ แต่วิธีหนึ่งที่อาจได้ผลคือการสร้างที่เก็บใหม่โดยใช้ชื่อที่ถูกต้องดันโค้ดของคุณไปที่อันนั้นแล้วลบอันเก่า


จากสิ่งที่ฉันรู้ว่าควรเก็บประวัติไว้ +1

1
การลบที่เก็บเก่าการสร้างที่เก็บใหม่และการพุชเนื้อหาของที่เก็บเก่าลงในที่เก็บใหม่จะใช้งานได้ ขอบคุณ!
Patrick

นี่คือคำสั่งเพื่อให้บรรลุสิ่งนี้ (สมมติว่า NewRepo ถูกสร้างขึ้นแล้วใน Gitolite): // ใน repo $ git remote เพิ่มระยะไกล <remote-moniker> NewRepo $ git push - all --force NewRepo // ใน repo ใหม่ $ git pull ไม่จำเป็นต้องแฮ็คการกำหนดค่า gitolite และประวัติทั้งหมดยังคงอยู่ :)
Matthew Skelton

0

การใช้ Greg Hewgill เป็นแนวคิดคุณสามารถเปลี่ยนชื่อที่เก็บในไฟล์ config ได้ คุณอาจต้องการลองใช้ที่เก็บข้อมูลจำลองก่อน ความสงสัยของฉันคือชื่อเก่าจะถูกลบชื่อใหม่จะถูกสร้างขึ้นและคุณต้องอัปเดตต้นกำเนิดของคุณในเครื่องจากนั้นกด


น่าเสียดายที่การเปลี่ยนชื่อที่เก็บในไฟล์ config ไม่ได้ผล gitlolite เพิ่มที่เก็บใหม่ แต่ไม่ได้ลบที่เก็บเก่า แม้ว่าการใช้ความคิดของ Greg จะได้ผล
Patrick

@ แพทริค: สิ่งที่ควรทราบฉันไม่จำเป็นต้องเปลี่ยนชื่อหรือลบออก

-2

แนวทางที่สะอาดคือการสร้างที่เก็บใหม่เป็นที่ว่างจากนั้นทำสิ่งต่อไปนี้:

สมมติว่าเก่าคือเก่าและใหม่ (ว่างเปล่า) คือใหม่:

# 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 (ในเครื่อง)

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