Skip to content

Instantly share code, notes, and snippets.

@acevif
Last active December 16, 2022 17:56
Show Gist options
  • Select an option

  • Save acevif/3818b38099c4b313dc1a6585db6b4f47 to your computer and use it in GitHub Desktop.

Select an option

Save acevif/3818b38099c4b313dc1a6585db6b4f47 to your computer and use it in GitHub Desktop.

Dev Containers 機能拡張とGitの罠

概要

Visual Studio CodeのDev Containers 機能拡張は、ホストの.gitconfigを自動でコンテナ内にコピーしてくれる親切機能を持っている。

しかしそれが仇となり、コンテナ内部ではgitがうまく動かないことがある。

そういう時はDev Containers 機能拡張の設定でなんとかなるかもしれない。 Dev › Containers: Copy Git Configをoffにし、Extensions → Dev Containers → Dotfiles: Repositoryに.gitconfigを含んだリポジトリを指定する。

Dev Containers 機能拡張を使う人は注意されたし。

経緯

コンテナ内のgitが全然動かず半日を溶かしてしまった。

調べていくと、/root/.gitconfigにホスト側の~/.gitconfigとほぼ同じ内容が設定されていることがわかった。 一体なぜなのか。

さらに調べると、Visual Studio CodeのDev Containers 機能拡張がホストの.gitconfigを自動でコンテナ内にコピーしてくれるらしい。

そのおかげで"箱から出してすぐ動く"とのことだが、全然動かなかったよ、私は…

The extension will automatically copy your local .gitconfig file into the container on startup so you should not need to do this in the container itself. https://code.visualstudio.com/docs/devcontainers/containers#_sharing-git-credentials-with-your-container

この自動でのコピーはこの設定(Dev › Containers: Copy Git Config)でoffにできる: image

そこでこの設定をoffにしてコンテナをリビルドすると無事gitが動くようになった。

しかしほとんどの項目が設定されてない(credential.helperのみ設定されている)ため、これはこれでそのままは使えない。

そこで Dev Containers用のdotfilesリポジトリを作り、.gitconfigを入れて、Extensions → Dev Containers → Dotfiles: Repositoryの設定から指定:

image

こうすると、Dev Containers機能拡張は.gitconfigをすこし書き換えてコンテナ内にコピーしてくれる。(書き変わったのはおそらくcredential.helperのみ)

macユーザなど、ホストと開発用コンテナの環境が大きく異なる人で、gitの設定をバリバリカスタマイズしている人はこういう設定をすると良いかも。知らんけど。

original thread: https://twitter.com/acevif/status/1603785973547945986?s=20&t=jsML-FW-jAzgBhMipwwsrA

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment