Gitolite로 생성 된 Git 저장소의 이름을 어떻게 바꾸나요?


85

gitolite를 사용하여 Git 저장소를 만들었습니다. 이제 해당 저장소의 이름을 바꾸고 싶습니다.

어떻게 할 수 있습니까?

gitolite의 readme에서는 서버에서 직접 작업해서는 안된다고 말합니다. 하지만이 경우 서버에서 약간의 작업을해야한다고 생각합니다.


내 답변에 대한 좋은 질문과 의견에 감사드립니다. ) 오늘은이 대답이 필요

답변:


135

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저장소에서 파일 을 편집 하고 저장소 이름을 새 이름으로 변경하십시오.

물론 모든 사용자는 새 저장소 이름을 가리 키도록 자신의 복제 구성을 업데이트해야합니다.


7
gitolite3 gl-conf에서는 저장소 이름도 편집 하고 변경해야합니다.
Fernando Correia 2013

4
저장소 로컬 사본의 원격 URL을 새 이름으로 설정하는 것을 잊지 마십시오 : git remote set-url git@your.server:new-name.git, 그런 다음 git fetch오류가 없는지 확인하십시오.
cneuro

이 답변에 도달하기 전에 처음 두 단계를 잘못된 순서로 수행했습니다. 참고로 그것은 또한 작동했으며 명령 rm -r new-name.git전에 만해 야했습니다 mv.
Arnaud P

9

구체적으로 gitolite에 익숙하지 않지만 작동 할 수있는 한 가지 방법은 올바른 이름으로 완전히 새로운 저장소를 만들고 해당 저장소에 코드를 푸시 한 다음 이전 저장소를 삭제하는 것입니다.


내가 아는 바에서 그것이 역사를 유지해야합니다. 한

1
이전 저장소를 삭제하고 새 저장소를 만들고 이전 저장소의 내용을 새 저장소로 푸시하는 것이 작동합니다. 감사!
Patrick

이를 달성하기위한 명령은 다음과 같습니다 (NewRepo가 이미 Gitolite에 생성되었다고 가정) : // 이전 저장소에서 $ git remote add <remote-moniker> NewRepo $ git push --all --force NewRepo // 새 저장소에서 : $ 자식 풀 없음 필요는 gitolite 설정을 해킹하고, 모든 역사는 유지
매튜 스켈 톤이에게

0

Greg Hewgill을 아이디어로 사용하면 구성 파일에서 저장소의 이름을 바꿀 수 있습니다. 먼저 더미 저장소에서 시도해 볼 수 있습니다. 내 의심은 이전 이름이 삭제되고 새 이름이 생성되며 원본을 로컬로 업데이트 한 다음 푸시해야한다는 것입니다.


안타깝게도 구성 파일의 저장소 이름을 바꾸는 것은 작동하지 않습니다. gitlolite는 새 저장소를 추가하지만 이전 저장소는 삭제하지 않습니다. 그래도 Greg의 아이디어를 사용하면 효과가 있습니다.
Patrick

@Patrick : 잘 알았습니다. 이름을 바꾸거나 삭제할 필요가 없습니다.

-2

깨끗한 방법은 새 저장소를 빈 저장소로 만든 후 다음을 수행하는 것입니다.

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의 지침 (로컬)에 따라 수행해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.