メモ > 技術 > 開発: Git > リポジトリを譲渡する
リポジトリを譲渡する
まずはリポジトリの所有者が作業する
リポジトリの「Repository settings」の「リポジトリの詳細」のページ右上にある「Manage Repository」から「Transfer Repository」を選択する
譲渡先のワークスペースを指定する
対象ユーザに承認メールが飛び、許可するとリポジトリが譲渡される。その際に移動先のプロジェクトも選択する
Sourcetreeなどを使用している場合、リポジトリの参照先を変更する
例えば taro から hanako に test リポジトリを譲渡した場合、参照すべきリポジトリのURLが
https://taro@bitbucket.org/taro/test.git
↓
https://taro@bitbucket.org/hanako/test.git
に変化するので、Sourcetreeなどのリポジトリ設定もそのように変更する
リポジトリの譲渡などでリポジトリのURLが変更された場合、デプロイ時の参照先も変更する必要がある
リポジトリの所有権を譲渡する - アトラシアン製品ドキュメント
https://ja.confluence.atlassian.com/bitbucket/transfer-repository-ownership-289964397.html
【git】リポジトリの移行時などでremote urlを変更する - KDE BLOG
https://kde.hateblo.jp/entry/2018/02/18/200459
以下は実際にリポジトリの譲渡を試したときのメモ
■前提
以下にリポジトリを作成してあるものとする
https://bitbucket.org/taro/test
ローカルのSourcetreeで参照できるものとする
権限を与えた他のユーザからも、Sourcetreeで参照できるものとする
サーバ上でPULLできるよう設定してものとする
以下は作業例
$ sudo su -s /bin/bash - apache
$ cat /var/www/.ssh/id_rsa.pub ... CLONEできるようにするため、この内容をリポジトリに登録。id_rsa.pub は作成済みのものとする
$ mkdir /var/www/vhosts/test
$ cd /var/www/vhosts/test
$ git clone git@bitbucket.org:taro/test.git /var/www/vhosts/test
$ git pull
■譲渡
譲渡元でリポジトリの譲渡作業を行う
「Repository settings → Manage repository」から、譲渡先のIDを入力する
譲渡先でメールを受け取ると、以下の内容が書かれているので許可する
(「以下のグループは」の下には何も書かれていなかった)
リポジトリの所有権の移転
太郎 山田が、リポジトリtaro/testの所有権をあなたに譲ろうとしています。
あなたが承認すれば、存在する全てのユーザーとグループがリボークされたリポジトリにアクセスできます。
また、以下のグループはリポジトリにアクセスできます:
[許可する] [拒否する]
許可すると「リポジトリは譲渡されました。」と表示される
この時点で、旧URLにはアクセスできなくなる
譲渡先では以下のURLでアクセスできるが、譲渡元は権限が無いのでアクセスできない
譲渡先で「ユーザーとグループのアクセス権」を与えれば、もちろんアクセスできるようになる
https://bitbucket.org/hanako/test
■譲渡後の設定(Sourcetree)
SourcetreeでPULLすると、リポジトリが見つからない(移動した)ため以下のエラーになる
remote: Repository taro/test not found
Sourcetreeで「設定 → origin → 編集 → URL/パス」を以下のように変更して「OK」すると、PULLできるようになる
https://taro@bitbucket.org/taro/test.git
↓
https://taro@bitbucket.org/hanako/test.git
■譲渡後の設定(サーバ)
サーバ上でPULLすると、リポジトリが見つからない(移動した)ため以下のエラーになる
$ git pull
repository does not exist.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
以下の手順でリポジトリの参照先を変更すると、PULLできるようになる
$ git remote -v
origin git@bitbucket.org:taro/test.git (fetch)
origin git@bitbucket.org:taro/test.git (push)
$ git remote set-url origin git@bitbucket.org:hanako/test.git
$ git remote -v
origin git@bitbucket.org:hanako/test.git (fetch)
origin git@bitbucket.org:hanako/test.git (push)
$ git pull
Already up-to-date.