ファイル整理
Macで、Emacsやzshなんかの設定ファイルをdotfilesというディレクトリに入れてGitで管理してるんだけど、他の方が作られたGitリポジトリを自分のGitリポジトリ内にgit clone
すると中が空っぽの状態になってた。
自分のGitリポジトリ内に取り入れたい場合はgit submodule add
というコマンドで取り込まないといけないっぽい。
それで、結構な数のリポジトリをgit clone
してしまってて、整理がめんどくさかったんだけど昨日で大体submoduleに移行できた。
作業内容
具体的にどういう作業をやったかというと、まず自分のGitリポジトリ内に入ってみて
git submodule init
とするとsubmoduleになっていないGitリポジトリがエラーメッセージにより発見できる。
そして、そのリポジトリ内の.git/config
をcat
なりエディタなんかで開いて、GitHubのURLをコピーしておく(いちいちGitHubのサイトで探し直すのがめんどくさいため)。
そしてそのリポジトリを(仮にhogeとする)
rm -rf hoge
で削除する。
この状態でgit submodule add
できそうだけど実はキャッシュによくないデータが残ってるっぽくてそれも削除する。
git rm --cached hoge
これでようやく
git submodule add https://~
でサブモジュール化できる。
http://~の部分はさっきコピーしたURL。
そしたらまたgit submodule init
でエラーの出るリポジトリ探してダウンロードするという流れの繰り返し。
一通りできたらgit submodule init
やってgit submodule update
やったほうがいいのかもしれない。
これでGitHub上で見てみるとサブモジュールが全て開発者の方のリポジトリへのリンクとなっている。
Emacsの拡張パッケージ
Emacsの設定ファイルについてはこれまでauto-installとel-getとpackage.elなんかを併用してたけど、ごちゃごちゃしてたからpackage-list-package
で発見できたパッケージについては全てpackage.elに移行した。
package.elに無いやつは上記の方法でサブモジュール化した。
package-list-package
の画面でU(大文字)押してx押すとアップデートできるパッケージをまとめてアップデートしてくれて便利っぽい。
参考サイト↓
package.el - Emacs JP
他のマシンで自分のリポジトリをcloneする
この場合は通常通りgit clone http://github.com/~~~~/hoge.git
という風にcloneしたら良い。
でもこの状態だとまだサブモジュールのフォルダは全て空っぽなので
git submodule init
そして
git submodule update
とすればめでたいことになる。
サブモジュールが更新されたときはgit submodule update
したら自分のリポジトリ内のサブモジュールも更新されるのかどうかはまだ確認できていない。
これで更新できたら便利。
一応Mac ProではGitの練習も兼ねてdotfilesだけGitHub使ってファイルを同期しようという方針にして、準備できたので早くシミュレーション回してみたい。