よーでんのブログ

One for All,All for わんわんお!

GitHubを使わずにリモートリポジトリっぽいことをする

リモートリポジトリっぽいことをする

GitHubを使わずにいい感じにバージョン管理しながらリモートに置いておきたいときのテクニック。
Google Drive と WSL2 をいい感じに組み合わせてできたのと、Gitの仕組みの勉強にもなったので備忘録

先に断っておくと、ここで紹介するのは一人で管理する用の手順です。
同様の手順でGoogle Driveの共有ドライブを使えば複数人の作業も可能だとは思います。

パソコン版ドライブ

Google Driveを開き、右上の歯車から「パソコン版ドライブをダウンロード」を押してポチポチダウンロード。

パソコン版ドライブをダウンロード

ダウンロード後、自分のGoogleアカウントでログイン。
これで G:\ としてマウントされて、以下のように表示されるはず。

G:\

WSL2

まず、G:\をマウントしたい。
これはやらなくてもマウントされてることもあったし、されてないこともあった。
WSLから /mnt/gls してみて、中身が空ならやる必要がある。

マウントポイントを作成して、WSLにログイン中のユーザでマウント。
rootのままマウントしてると後でエラーになる。

sudo mkdir /mnt/g
sudo mount -t drvfs -o uid=`id -u`,gid=`id -g`,username=`whoami` G: /mnt/g

再起動とか、何かしらのはずみでマウントが解除されたりしたら mount のコマンドだけ都度やる必要がある。

そしたら、リモート用のgitディレクトリを作成。
ベアリポジトリという概念を初めて知った。 git init のオプションでいい感じに作れるらしい。
(複数人で共有したいときは マイドライブ 部分を 共有ドライブ とかにすれば同じことができるはず。)

mkdir -p /mnt/g/マイドライブ/DriveHub/repo.git
cd /mnt/g/マイドライブ/DriveHub/repo.git/
git init --bare --shared
git branch -m main

これでリモート用のgitディレクトリの準備が完了。
試しにクローンしていつものコマンド群。

git clone /mnt/g/マイドライブ/DriveHub/repo.git
cd repo/
echo "#repo" > README.md
git add README.md
git commit -m "init"
git push origin main

push した際、 /mnt/g/マイドライブ/DriveHub/repo.git の変更が Google Drive アプリを通じて同期されるまで待たないと行けないのが玉に瑕。

共有

別のPCでパソコン版ドライブをダウンロードし、同一のアカウントでログイン。

/wsl/g が生えてない場合は、さっきの手順でWSLからマウント。
ベアリポジトリは既に /mnt/g/マイドライブ/DriveHub/repo.git にあるので、それを clone だけすれば良い。

$ git clone /mnt/g/マイドライブ/DriveHub/repo.git/
Cloning into 'repo'...
done.
fatal: 'refs/remotes/origin/desktop.ini' has a null OID

と、ここでエラー。desktop.ini さんがエラーを起こしてる。。。
ベアリポジトリcd して desktop.ini再帰的に削除。

cd /mnt/g/マイドライブ/DriveHub/repo.git/
find . -name 'desktop.ini' -exec rm -f {} \;

もう一回 clone したらいけた。

$ git clone /mnt/g/マイドライブ/DriveHub/repo.git/
Cloning into 'repo'...
done.

これでGoogle Driveを利用してリモートリポジトリっぽい感じにできた。