昨日Atlassianからこんなメールが届きました。

自分が作ったソースはBitbucketで管理していて、Atlassianはその運営会社です。ソース管理はGitHubがポピュラーですが、以前はGitHubは、無料ではソースをprivateな領域に置けなかったのに対し、Bitbucketは最初からprivateな領域に無料で置けたのと、無料プランでも置くファイルのサイズに制限がなかった(リポジトリあたり最大4GB)のでBitbucketを選んだのですが、料金体系が変わって、リポジトリを置くワークスペースあたり1GB、無料プランは1アカウントあたり作れるワークスペースはひとつなので、最大1GBに制限がついてしまったようです。
で、4/28までにどうにかしないと、そのワークスペースはリードオンリーになる、とのこと。
今のワークスペースのサイズを調べると、4GBくらい使っていました。どげんかせんといかん、ということで、ワークスペースをダイエットします。
まずはもう要らないリポジトリを消して3.5GBくらいまで削減。で、次にデータの多いリポジトリを調べると、StarsPhotoとその無料版、StarsPhotoLiteでした。もうアップデートはしないアプリですが、自分では使っているのでソースは消せません。ということで、これらのリポジトリを小さくします。
今のStarsPhotoのリポジトリのサイズは950MB。コレだけでほぼ使い切っています。

どうしようかな、とググっていたら見つけたのがこの方法。BFGというツールを使って、リポジトリにある大きなファイルを削除します。gitは履歴を関しているので、大きなファイルを消すだけではリポジトリは小さくならなくて、ファイルを消してからコレまでのコミットを全部書き換える必要があります。ここらへんを全部やってくれるツールです。
この記事に従って大きなファイルを消していきます。まずはこのサイトからBFGをダウンロードします。
で、次にremoteのリポジトリを --mirrorオプションで丸ごとクローンします。

誤った処理をしても戻せるようにクローンしたのをさらにバックアップして、このリポジトリを小さくしていきます。ダウンロードしたBGFのjavaファイルをこのリポジトリと同じ階層に置きます。
で次のコマンドを実行。ここでは90MBより大きなファイルを削除します。
iPhone用のlibとC#をC++に変換するlibが大きかったようです。いずれもgitで管理する必要のないものですが、間違って一時一緒にコミットしてしまっていたようです。
出力にはdeleted filesと書いていますが、この時点ではファイルは消えていなくて、次のコマンドでほんとにファイルを消します。
小さくなりました。

で、後はコレをリモートのリポジトリにpushすればOK。
と思いきや・・・逆に大きくなっている orz...

どうも単純にpushするのだと、書き換えるのではなく追加されてしまうようです。どうすれば書き換えてくれるのかわからなかったので、仕方なく今回は、リポジトリを新規に作って、そこにpushすることにします。参考にしたサイトはこちら。
まずはBitbucketで新たなリポジトリを作ります。今回はTeleSkymapBT3Mirrorという名前で作成。
このとき今回はデフォルトブランチを、普段使わない名前で作成しました。このあとpushするときに同じ名前だとなんかぶつかりそうな気がして。ホントのところはわかりませんが。

で、さっき大きなファイルを消したリポジトリのフォルダに入って、push先を新しいリポジトリに切り替えます。
大丈夫そうです。
あれ??? もしかして単純に --mirror オプションを付けてpushすれば良いだけだったのかな?
2025/3/30追記:
--mirrorオプションを付けてpushしてもやっぱり追加されるだけで、サイズが増えていました。
後は元のリポジトリを消して、ミラーのリポジトリ名をもとのと同じにして、mainブランチを正しくセットすれば完成。リポジトリのサイズも小さくなっています。

試しにコレをクローンしてUnityで動かしてみたら、問題なく動きました。

StarsPhotoLiteについても同じようにダイエットして、2.4GBまで小さくなりました。

でもまだ後半分以上減らす必要があります。トホホ・・・
2025/3/30追記:
他の大きめのリポジトリで大きいファイルを消したり、一部別のところにバックアップしたりして、どうにか1GBを切ることができました。コレで一安心 ε-(´∀`*)ホッ

2025/3/30更に追記:
よく見たらGitHubはprivateもpublicも無制限で使えるのですね。GitHubに引っ越しするのが一番幸せだったかf^^;

自分が作ったソースはBitbucketで管理していて、Atlassianはその運営会社です。ソース管理はGitHubがポピュラーですが、以前はGitHubは、無料ではソースをprivateな領域に置けなかったのに対し、Bitbucketは最初からprivateな領域に無料で置けたのと、無料プランでも置くファイルのサイズに制限がなかった(リポジトリあたり最大4GB)のでBitbucketを選んだのですが、料金体系が変わって、リポジトリを置くワークスペースあたり1GB、無料プランは1アカウントあたり作れるワークスペースはひとつなので、最大1GBに制限がついてしまったようです。
で、4/28までにどうにかしないと、そのワークスペースはリードオンリーになる、とのこと。
今のワークスペースのサイズを調べると、4GBくらい使っていました。どげんかせんといかん、ということで、ワークスペースをダイエットします。
まずはもう要らないリポジトリを消して3.5GBくらいまで削減。で、次にデータの多いリポジトリを調べると、StarsPhotoとその無料版、StarsPhotoLiteでした。もうアップデートはしないアプリですが、自分では使っているのでソースは消せません。ということで、これらのリポジトリを小さくします。
今のStarsPhotoのリポジトリのサイズは950MB。コレだけでほぼ使い切っています。

どうしようかな、とググっていたら見つけたのがこの方法。BFGというツールを使って、リポジトリにある大きなファイルを削除します。gitは履歴を関しているので、大きなファイルを消すだけではリポジトリは小さくならなくて、ファイルを消してからコレまでのコミットを全部書き換える必要があります。ここらへんを全部やってくれるツールです。
この記事に従って大きなファイルを消していきます。まずはこのサイトからBFGをダウンロードします。
で、次にremoteのリポジトリを --mirrorオプションで丸ごとクローンします。
git clone --mirror https://xxxxx@bitbucket.org/xxxxx/teleskymapbt3.gitクローンしたフォルダを見ると、たしかにでかい。

誤った処理をしても戻せるようにクローンしたのをさらにバックアップして、このリポジトリを小さくしていきます。ダウンロードしたBGFのjavaファイルをこのリポジトリと同じ階層に置きます。
で次のコマンドを実行。ここでは90MBより大きなファイルを削除します。
java -jar bfg-1.15.0.jar --strip-blobs-bigger-than 90M teleskymapbt3.gitするとこんな出力がされました。
Deleted files
-------------
Filename Git id
----------------------------------------------------------
libiPhone-lib.a | d6b9dc4d (511.5 MB), 1455d017 (514.4 MB)
libil2cpp.a | ce87c7cd (98.1 MB), 764e279c (92.9 MB)
<略>
BFG run is complete! When ready, run: git reflog expire --expire=now --all && git gc --prune=now --aggressive
iPhone用のlibとC#をC++に変換するlibが大きかったようです。いずれもgitで管理する必要のないものですが、間違って一時一緒にコミットしてしまっていたようです。
出力にはdeleted filesと書いていますが、この時点ではファイルは消えていなくて、次のコマンドでほんとにファイルを消します。
git reflog expire --expire=now --all && git gc --prune=now --aggressive
小さくなりました。

で、後はコレをリモートのリポジトリにpushすればOK。
と思いきや・・・逆に大きくなっている orz...

どうも単純にpushするのだと、書き換えるのではなく追加されてしまうようです。どうすれば書き換えてくれるのかわからなかったので、仕方なく今回は、リポジトリを新規に作って、そこにpushすることにします。参考にしたサイトはこちら。
まずはBitbucketで新たなリポジトリを作ります。今回はTeleSkymapBT3Mirrorという名前で作成。
このとき今回はデフォルトブランチを、普段使わない名前で作成しました。このあとpushするときに同じ名前だとなんかぶつかりそうな気がして。ホントのところはわかりませんが。

で、さっき大きなファイルを消したリポジトリのフォルダに入って、push先を新しいリポジトリに切り替えます。
cd teleskymapbt3 git remote set-url --push origin https://xxxx@bitbucket.org/xxxx/teleskymapbt3mirror.gitpush先が切り替わったか確認します。
大丈夫そうです。
git remote -v origin https://xxxx@bitbucket.org/xxxx/teleskymapbt3.git (fetch) origin https://xxxx@bitbucket.org/xxxx/teleskymapbt3mirror.git (push)ということでコレをpushします。
git push --mirror
<略> * [new branch] liteEdition -> liteEdition * [new branch] master -> master ! [remote rejected] aaaa (deletion of the current branch prohibited) error: failed to push some refs to 'https://bitbucket.org/xxxx/teleskymapbt3mirror.git'最後のエラーは最初に作ったブランチが消せないよ、と言っているので、放っておきます。
あれ??? もしかして単純に --mirror オプションを付けてpushすれば良いだけだったのかな?
2025/3/30追記:
--mirrorオプションを付けてpushしてもやっぱり追加されるだけで、サイズが増えていました。
後は元のリポジトリを消して、ミラーのリポジトリ名をもとのと同じにして、mainブランチを正しくセットすれば完成。リポジトリのサイズも小さくなっています。

試しにコレをクローンしてUnityで動かしてみたら、問題なく動きました。

StarsPhotoLiteについても同じようにダイエットして、2.4GBまで小さくなりました。

でもまだ後半分以上減らす必要があります。トホホ・・・
2025/3/30追記:
他の大きめのリポジトリで大きいファイルを消したり、一部別のところにバックアップしたりして、どうにか1GBを切ることができました。コレで一安心 ε-(´∀`*)ホッ

2025/3/30更に追記:
よく見たらGitHubはprivateもpublicも無制限で使えるのですね。GitHubに引っ越しするのが一番幸せだったかf^^;
コメント
コメント一覧 (4)
nekomeshi312
が
しました
nekomeshi312
が
しました