如何重命名使用gitolite创建的Git存储库?


85

我使用gitolite创建了一个Git存储库。现在,我想重命名该存储库。

我怎样才能做到这一点?

在gitolite的自述文件中,我说我不应该直接在服务器上工作。但是我想在这种情况下我必须在服务器上做一些工作,对吗?


好问题,感谢您对我的回答发表评论。今天我需要这个答案;)

Answers:


135

gitolite基本管理手册中所述

重命名仓库

这是相似的;中没有代码可以执行此操作gitolite。您要做的是:

  • 登录到服务器cd $REPO_BASE(默认值:)cd ~/repositories,然后

    mv old-name.git new-name.git

  • 您gitolite管理员克隆,编辑背部conf/gitolite.conf和替换所有出现的old-namenew-name。然后像往常一样添加,提交和推送。

这两个步骤的顺序很重要。不要扭转它们:-)

在gitolite3上需要执行第三步:

  • gl-conf在仓库中编辑文件,并将存储库名称更改为新名称

当然,每个用户都应更新其克隆配置以指向新的存储库名称。


7
在gitolite3上,您还必须编辑gl-conf和更改存储库名称。
Fernando Correia 2013年

4
不要忘记将您的仓库本地副本的远程URL设置为新名称:git remote set-url git@your.server:new-name.git,然后执行agit fetch来确保没有错误。
cneuro

在达到此答案之前,我以错误的顺序完成了前两个步骤。仅供参考,它也有效,只是必须rm -r new-name.gitmv命令之前执行。
Arnaud P

9

我对gitolite并不特别熟悉,但是一种可行的方法是使用正确的名称创建一个全新的存储库,将您的代码推送到该存储库中,然后删除旧的存储库。


据我所知,应该保留历史。+1

1
删除旧存储库,创建新存储库并将旧存储库的内容推送到新存储库中。谢谢!
Patrick

以下是实现此目的的命令(假定已经在Gitolite中创建了NewRepo)://在旧的repo $ git remote中添加<remote-moniker> NewRepo $ git push --all --force NewRepo //在新的repo中$ git pull无需破解gitolite配置,并且保留了所有历史记录:)
Matthew Skelton 2013年

0

使用Greg Hewgill的想法,您可以在配置文件中重命名存储库。您可能想先在虚拟存储库上尝试一下。我的怀疑是旧名称将被删除,新名称将被创建,您需要在本地更新起源,然后再推送。


不幸的是,重命名配置文件中的存储库不起作用。gitlolite添加新的存储库,但不删除旧的存储库。但是,使用格雷格的想法是可行的。
Patrick

@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

或者,您可以直接将远程回购用于OLD:

# mkdir /tmp/1
# cd /tmp/1
# git clone NEW_REPO new
# cd new
# git pull OLD_REPO
# git push origin master

这将保留所有历史记录,并将让甘露石处理内部结构。此外,您还必须更新gitolite-admin,但顺序没有限制。

这也可以远程工作而不会出现问题。

不过,删除OLD资料库应按照gitolite的指示(本地)进行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.