ファイル整理

Macで、Emacszshなんかの設定ファイルをdotfilesというディレクトリに入れてGitで管理してるんだけど、他の方が作られたGitリポジトリを自分のGitリポジトリ内にgit cloneすると中が空っぽの状態になってた。
自分のGitリポジトリ内に取り入れたい場合はgit submodule addというコマンドで取り込まないといけないっぽい。
それで、結構な数のリポジトリgit cloneしてしまってて、整理がめんどくさかったんだけど昨日で大体submoduleに移行できた。

作業内容

具体的にどういう作業をやったかというと、まず自分のGitリポジトリ内に入ってみて

git submodule init

とするとsubmoduleになっていないGitリポジトリがエラーメッセージにより発見できる。
そして、そのリポジトリ内の.git/configcatなりエディタなんかで開いて、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使ってファイルを同期しようという方針にして、準備できたので早くシミュレーション回してみたい。