- 投稿日:2019-03-18T20:24:38+09:00
git submoduleの話(cloneしたら有るはずのものが無い空っぽのディレクトリが… etc)
個人的備忘録です。
git submodule とは
乱暴に言うと、あるリポジトリのサブディレクトリ配下に 別のリポジトリ(プロジェクト) を取り込み、そのまま管理するというもの。
どこで使うの
たとえば static site generator である Hugo でテーマ(スキン)。
テーマそれぞれが git リポジトリになっていて、それを hugo の site配下で themes/ の下に持ってくる必要がある。$ cd themes $ git clone テーマ.git一見これでも問題はない。でも、たとえば netlify を使うことになると、このhugoのsite以下をgitで管理する必要が出てくる。じゃあ、その中にあるthemesにどうやって持ってくるのか? そこでsubmoduleの出番になってくる。
小さな落とし穴
$ git submodule add サブモジュールとしてチェックアウトしたいなんとか.git
こうすると、とりあえずうまくいく。ファイルもばっちり取り出されている。これを、git addしてcommitしてpushして...
別のマシンなり環境なりで、この全体を git clone する。と、サブモジュールとしたディレクトリ配下が空っぽである。
あれ!?pushしたんじゃなかったの?対策
のちに取り出した方の環境ではサブモジュールが有効になっておらず取り出せてもいない。詳細は割愛する。(.gitmodulesとかなんとか調べてください)
$ git submodule init $ git submodule updateとするか、そもそも
$ git clone --recursive 自分のリポジトリとすれば良い。
余談
netlify で hugo なサイトを回している感じでは、clone --recursive されているようだ。実際チュートリアルにも submodule でやれよみたいなこと書いてあるし。
余談2
git submodule 「なにがどうなっているのか」を完全に理解しない限り奇妙に見える(たとえばcommit idに紐付いているとか) が、使う分にはすこぶる快適なのでオススメ
参照
- Hugo (https://gohugo.io/)
- netlify (https://www.netlify.com/)
- 投稿日:2019-03-18T11:20:09+09:00
SourceTreeで重いリポジトリの最新のコミットだけcloneする
はじめに
重いリポジトリをそのままcloneしようとすると、時間がかかります。下手すると数時間かかったりして、回線が貧弱だとタイムアウトしてしまったりします。そうなると、最初からやり直し・・・
とりあえず、最新のコミットさえあればよくて、それ以前のコミットは不要ということであれば、shallow clone をすればよいです。過去のコミットはダウンロードしないので、その分、通信量が少なくなります。
SourceTreeだとGUIでできるので、その手順を忘れないうちに残します。
SourceTreeで最新のコミットだけcloneする
SourceTreeを起動し、いつも通り Clone の画面を開き、リモートリポジトリのURLやローカルフォルダを指定します。
詳細オプション
をクリックすると、クローンの深さ
という項目が出てくるので、1
を入力します。
クローン
ボタンをクリックすれば、 shallow clone が始まります。仕組み
上記の操作は、Gitコマンドで言うと、
git clone --depth 1 (リモートリポジトリのURL)
に相当します。
クローンの深さ
は、--depth
に対応しています。
ここの数値を10
にすれば、最新の10個のコミットを取得できます。さいごに
これでタイムアウト地獄から解放されました!
以下の記事を参考にさせていただきました。ありがとうございます。
- 投稿日:2019-03-18T01:53:39+09:00
間違えてVCCWで自動生成されるファイルもご丁寧にgitignoreに突っ込んでなかったのでgitで無視させたら1,015,563行の削減ができた話
えー、ヒッジョーにアホ臭い話なのですが、仕事でやってるWordPress案件をVCCWで回してまして、VCCWで自動生成されるコードを.gitignoreに追加してなかったので追加したら1,015,563行の削減ができたことをお知らせします。最初は
.DS_Store .ansible .bundle .envrc .github/ .idea/ .travis.yml .vagrant npm-debug.log package.box playbook.retry /wordpress/.htaccess /wordpress/sitemap.xml /wordpress/sitemap.xml.gz /wordpress/wp-config.php /wordpress/wp-content/advanced-cache.php /wordpress/wp-content/backup-db/ /wordpress/wp-content/backups/ /wordpress/wp-content/blogs.dir/ /wordpress/wp-content/cache/ /wordpress/wp-content/upgrade/ /wordpress/wp-content/wp-cache-config.php /wordpress/wp-content/ai1wm-backupsという.gitignore(多分最初こんな感じ)だったのですが、これをいろいろ自動生成されそうなものを追加していって
.DS_Store .ansible .bundle .envrc .github/ .idea/ .travis.yml .vagrant npm-debug.log package.box playbook.retry !*.gitignore /wordpress/.editorconfig /wordpress/.htaccess /wordpress/index.php /wordpress/license.txt /wordpress/readme.html /wordpress/sitemap.xml /wordpress/sitemap.xml.gz /wordpress/wp-activate.php /wordpress/wp-blog-header.php /wordpress/wp-comments-post.php /wordpress/wp-config-sample.php /wordpress/wp-config.php /wordpress/wp-cron.php /wordpress/wp-links-opml.php /wordpress/wp-load.php /wordpress/wp-login.php /wordpress/wp-mail.php /wordpress/wp-settings.php /wordpress/wp-signup.php /wordpress/wp-trackback.php /wordpress/xmlrpc.php /wordpress/wp-admin/ /wordpress/wp-content/advanced-cache.php /wordpress/wp-content/backup-db/ /wordpress/wp-content/backups/ /wordpress/wp-content/blogs.dir/ /wordpress/wp-content/cache/ /wordpress/wp-content/languages/ /wordpress/wp-content/plugins/ /wordpress/wp-content/themes/index.php /wordpress/wp-content/themes/twentyfifteen/ /wordpress/wp-content/themes/twentyseventeen/ /wordpress/wp-content/themes/twentysixteen/ /wordpress/wp-content/themes/twentynineteen/ /wordpress/wp-content/upgrade/ /wordpress/wp-content/ai1wm-backups/ /wordpress/wp-content/wp-cache-config.php /wordpress/wp-content/index.php /wordpress/wp-includes/ node_modules/