gitolite を使用して Git リポジトリを作成しました。ここで、そのリポジトリの名前を変更したいと思います。
これどうやってするの?
gitolite の readme には、サーバー上で直接作業するべきではないと書かれています。しかし、この場合、サーバーで何らかの作業を行う必要があると思いますよね?
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
し、リポジトリ名を新しい名前に変更しますそしてもちろん、すべてのユーザーはクローン構成を更新して、新しいリポジトリ名を指すようにする必要があります。
特に gitolite には詳しくありませんが、うまくいく可能性のある 1 つの方法は、正しい名前で完全に新しいリポジトリを作成し、コードをそのリポジトリにプッシュしてから、古いリポジトリを削除することです。
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 を更新する必要がありますが、順序に制限はありません。
これはリモートでも問題なく動作します。
ただし、古いリポジトリの削除は、gitolite の指示に従って (ローカルで) 行う必要があります。