ansibleでテンプレートとなるplaybookファイル用意してて、
サービスごとにそのplaybookを複製して使いたいときとか。そんなことあると思います。
git clone --mirrorとやらを使う
- コピー元リモート:test.com:group/hoge.git
- コピー先リモート:test.com:group/hoge-copy.git
- コピー先ローカル:hoge-copy/.git
1.リモート(gitlab)上でコピー先となるプロジェクトを作成
これでまず空のプロジェクトができあがりますね。
2.ローカル上でディレクトリを作成
1 |
mkdir hoge-copy |
1 |
cd hoge-copy |
※単純にディレクトリを作成して移動するだけでOKです。
3.コピー元リモートリポジトリから複製
1 |
git clone --mirror https://test.com:group/hoge.git .git |
※ファイルなどがローカルに持ってこられませんがOKです。ここでls叩いてもディレクトリの中には.gitディレクトリがあるだけです。
4.コピー先をリモートリポジトリに変更
1 |
git remote set-url origin https://test.com:group/hoge-copy.git |
もちろんこのタイミングでもファイルがローカルにくることはありませんが大丈夫です。
5.コピー先にpush
1 2 |
cd .git git push --mirror https://test.com:group/hoge-copy.git |
これでリモート先にファイルがコピーされました。
6.ディレクトリを削除してclone
1 2 |
cd ../.. rm -rf hoge-copy git clone https://test.com:group/hoge-copy.git |
こうすることできれいにプロジェクトをコピーしてすることができます。幸せいっぱいですね。
今日の一言
これが本当に正しいやり方なのかはわかりませんが僕はこうやってやるようにしてます。