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-adminクローンに戻り、conf/gitolite.confすべての出現箇所を編集old-nameしてnew-name。に置き換えます。次に、通常どおりに追加、コミット、およびプッシュします。

これらの2つのステップの順序は重要です。それらを逆にしないでください:-)

gitolite3では3番目のステップが必要です。

  • gl-confリポジトリ内のファイルを編集し、リポジトリ名を新しい名前に変更します

そしてもちろん、すべてのユーザーは、新しいリポジトリ名を指すようにクローン構成を更新する必要があります。


7
gitolite3ではgl-conf、リポジトリ名も編集および変更する必要があります。
フェルナンドコレイア2013年

4
リポジトリのローカルコピーのリモートURLを新しい名前に設定することを忘れないでください:git remote set-url git@your.server:new-name.git次にgit fetch、エラーがないことを確認するためにを実行します。
cneuro 2015

この答えに到達する前に、最初の2つのステップを間違った順序で実行しました。参考までに、それも機能しました。コマンドのrm -r new-name.git前に実行する必要がありましたmv
Arnaud P

9

私は特にgitoliteに精通していませんが、うまくいく可能性のある1つのアプローチは、正しい名前で完全に新しいリポジトリを作成し、コードをそのリポジトリにプッシュしてから、古いリポジトリを削除することです。


私が知っていることから、それは歴史を保つべきです。+1

1
古いリポジトリを削除し、新しいリポジトリを作成し、古いリポジトリのコンテンツを新しいリポジトリにプッシュすることは機能します。ありがとう!
パトリック

これを実現するためのコマンドは次のとおりです(NewRepoがすでにGitoliteで作成されていることを前提としています)://古いリポジトリで$ git remote add <remote-moniker> NewRepo $ git push --all --force NewRepo //新しいリポジトリで$ git pull gitolite設定をハックする必要はなく、すべての履歴が保持されます:)
Matthew Skelton

0

Greg Hewgillをアイデアとして使用すると、構成ファイルでリポジトリの名前を変更できる可能性があります。最初にダミーリポジトリでそれを試してみることをお勧めします。私の疑いは、古い名前が削除され、新しい名前が作成され、ローカルでオリジンを更新してからプッシュする必要があるということです。


残念ながら、構成ファイル内のリポジトリの名前を変更することはできません。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

または、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.