Open1

GitHub のリポジトリから複数のファイルを取得する

hankei6kmhankei6km

hankei6km/test-marp-ogimage-pages のリポジトリで hankei6km/test-marp-ogimage.devcontainerthemes を使いたかった。
(そして submodule を使うのも面倒だった)

単独ファイルなら wget などでよいのだが、複数ファイルだと少しばかり工夫が必要。

リポジトリを tar ball で取得

zip で取得する方法。

https://stackoverflow.com/a/7048489

これの zipballtarball に変えたら .tar.gz で取得できた。

部分的に展開する

上記方法で取得すると path にコミットの hash が含まれている。

$ curl -sL https://github.com/hankei6km/test-marp-ogimage/tarball/master | tar -ztf -
hankei6km-test-marp-ogimage-95df8cb/
hankei6km-test-marp-ogimage-95df8cb/.devcontainer/
hankei6km-test-marp-ogimage-95df8cb/.devcontainer/Dockerfile
hankei6km-test-marp-ogimage-95df8cb/.devcontainer/devcontainer.json
hankei6km-test-marp-ogimage-95df8cb/.devcontainer/first-run-notice.txt
<snip>

これは扱いが面倒なので --strip-components=1 で取り除く。特定のディレクトリ(path)にマッチしたものだけを展開するには --wildcards を使う。

$ curl -sL https://github.com/hankei6km/test-marp-ogimage/tarball/master | tar --wildcards --strip-components=1 -zxf - "**/.devcontainer/*" "**/themes/*"

$ ls -a
.  ..  .devcontainer  themes