自分にやさしく学ぶプログラミング

プログラミング学習記録、備忘録

iCloud管理下のフォルダでgitリポジトリをクローン ⇄ rm -rf 繰り返したら、覚えのないファイルが生成されつづけて困った話

私は普段MacBookAirで開発を行っており、データはほぼ全てiCloudと同期を取っている。
そのおかげでクリーンインストールからの復元も簡単なわけだけど、開発中のリポジトリiCloud管理下に置いた結果、えらく困ったことが起きた。
話せば長いのでざっくり説明すると、

  • iCloud管理下のDocumentフォルダでgit clonerm -rfを繰り返していたら、覚えのないファイルが大量に生成されるという現象が発生
  • リポジトリiCloudの管理外に置いたら解決した
  • gitのリポジトリ(というより同名ファイル?)の削除と復元を短時間の間に繰り返すと、iCloudとの同期が取れなくなることがある模様
  • 開発中のリポジトリiCloudで管理しない方が良さそう

というお話。

発生した現象:ローカルリポジトリに知らぬ間にファイルが増えている

GitHub上のとあるリポジトリを、自分のMacのDocumentフォルダ下にクローンしたのだが、いろいろエラーが出たりしたため、何度かリポジトリrm -rfしてgit cloneし直すということを繰り返した。
そのうち問題が解消されたようだったので、ひきつづきコードエディタで開発を進めようとしたところ、ふと気づいたら知らないファイルが大量に生成されていた。
どうやら既存のファイルと同名のファイルが増えているようで、"Gemfile 5"とか"~~ 3.rb"のように、既存のファイル名にスペースと数字が付加されていた(下図参照)。 ちなみにファイルの中身は既存のファイルとまったく一緒だった。

これはファイルが増えた時のコードエディタ(VScode)のエクスプローラ画面。403個のファイルが新たに生成され、各ファイル名の末尾にスペースと数字が付加されている。
ファイルが増えた時のコードエディタ(VScode)のエクスプローラ画面

なんだろうと不思議に思いつつ、増えたファイルを全部削除したのだが、しばらくするとまた同じようなファイルが増えている。
仕方ないのでローカルからリポジトリごと削除して再度クローンしたが、それでも直らない。
他のアプリを全て終了してみても、Macを再起動しても、果てはMacクリーンインストールまでしてみたが、それでも症状は改善しなかった。

リポジトリiCloud管理外に置いたら直った

色々試してもうまくいかず困っていたところ、同じフィヨルドブートキャンプで勉強中の@imaizumimrさんから、「iCloudとの同期が取れてないのでは?」との指摘をいただき、こんな参考記事を教えていただいた。

amksystem.com

リポジトリを置いていたDocumentフォルダはiCloud管理下にあるので、その可能性はありそう・・・。

と言うことで、ホームディレクトリ直下(iCloud管理外)に新しくディレクトリを作り、そちらにリポジトリを置くようにしたところ、知らないファイルが増えることは無くなった!

考察

今までもソースコードiCloud管理下のフォルダに置いていたが、今回のように同期が取れなくなることはなかったと思う。
いつもと違う点としては、リポジトリrm -rfしてgit cloneし直すというのを何度か繰り返したことくらい。
短時間に同名のファイルを消したり復元したりを繰り返すと、iCloudの同期が狂うということか?

まとめ

今回得られた教訓は、「iCloud管理下には開発中のリポジトリを置かない方が良さそう」と言うこと。
Document下に置くのは本当に「書類」だけにしといた方がいいのかも。

Dropboxなど、他のクラウドサービスではそういったことは起こらないと言う意見も聞いた。サービスごとに同期性能には差があるらしい。
でも結局のところ、継続的なバックアップ目的なら、外付けHDDを用意してTime Machineを 使うのが一番安全なのかもしれない。
Time Machineに対応したNASを用意する方法もあるらしい(下記のリンク参照)ので、そのうち試してみたい。

blog.jnito.com