gitolite를 사용하여 Git 저장소를 만들었습니다. 이제 해당 저장소의 이름을 바꾸고 싶습니다.
어떻게 할 수 있습니까?
gitolite의 readme에서는 서버에서 직접 작업해서는 안된다고 말합니다. 하지만이 경우 서버에서 약간의 작업을해야한다고 생각합니다.
답변:
gitolite basic-admin 매뉴얼에 명시된대로 :
이것은 비슷합니다. 에서이 작업을 수행하는 코드가 없습니다 gitolite
. 당신이하는 일은 :
서버에 로그온 cd $REPO_BASE
(기본값 :) cd ~/repositories
및
mv old-name.git new-name.git
당신의 gitolite-관리자 복제, 편집 다시 conf/gitolite.conf
및 모든 항목 교체 old-name
와를 new-name
. 그런 다음 평소대로 추가, 커밋 및 푸시합니다.
이 두 단계의 순서가 중요합니다. 되 돌리지 마십시오 :-)
gitolite3에서 세 번째 단계가 필요합니다.
gl-conf
저장소에서 파일 을 편집 하고 저장소 이름을 새 이름으로 변경하십시오.물론 모든 사용자는 새 저장소 이름을 가리 키도록 자신의 복제 구성을 업데이트해야합니다.
gl-conf
에서는 저장소 이름도 편집 하고 변경해야합니다.
git remote set-url git@your.server:new-name.git
, 그런 다음 git fetch
오류가 없는지 확인하십시오.
rm -r new-name.git
전에 만해 야했습니다 mv
.
구체적으로 gitolite에 익숙하지 않지만 작동 할 수있는 한 가지 방법은 올바른 이름으로 완전히 새로운 저장소를 만들고 해당 저장소에 코드를 푸시 한 다음 이전 저장소를 삭제하는 것입니다.
Greg Hewgill을 아이디어로 사용하면 구성 파일에서 저장소의 이름을 바꿀 수 있습니다. 먼저 더미 저장소에서 시도해 볼 수 있습니다. 내 의심은 이전 이름이 삭제되고 새 이름이 생성되며 원본을 로컬로 업데이트 한 다음 푸시해야한다는 것입니다.
깨끗한 방법은 새 저장소를 빈 저장소로 만든 후 다음을 수행하는 것입니다.
old는 OLD이고 new (비어 있음)는 NEW라고 가정합니다.
# 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
또는 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의 지침 (로컬)에 따라 수행해야합니다.