git submodule
http://d.hatena.ne.jp/woremacx/20080308/1204986198のように、gitで外部レポジトリを扱えるようにする方法。
外部レポジトリの追加
git submodule addすると、外部レポジトリをサブモジュールとして取り込めるようになります。
# cloneする $ git clone git://example.com/repos/private/ $ cd private # git://example.com/repos/external/を追加する $ git submodule add git://example.com/repos/external/ # commitしておく $ git commit -m "Add submodule" $ git push
外部レポジトリ内での作業
外部レポジトリで作業したときは、そこでコミットするほかに、上位の自分のレポジトリでもコミットしておく必要がある。自分のレポジトリと外部レポジトリのリビジョンの対応関係を覚えておくためらしい。
# 外部レポジトリでいろいろ作業する $ cd external $ echo foo >> foo.txt $ git add foo.txt $ git commit -m 'some text...' $ git push # 自分のレポジトリでもコミットする $ cd .. $ git add external $ git commit -m 'update submodule' $ git push
git cloneしたときの作業
自分のレポジトリをコピーしただけでは、サブモジュールはコピーされません。git submodule initとgit submodule updateをする必要がある。
# 別のマシンで $ git clone git://example.com/repos/private/ $ cd private # externalの中はcloneされない $ ls -a . .. # git submodule init/git submoudle updateするとcloneされる $ git submodule init $ git submodule update
また、これだけではbranchがmasterになっていないので、masterに切り替える必要がある。
# externalはbranchが(no branch)になっている $ cd external $ git branch * (no branch) master # branchをmasterにする $ git checkout master ... Switched to branch "master"
参考
- Git Users' Manual - Chapter 8. Submodule - 使い方について
- git-submodule(1) - git submoduleコマンドの詳細
- gitmodules(5) - .gitmoduleファイルの詳細(?)
Problem27 -実際に計算してみた-
30分プログラム、その300。昨日のコード(id:mzp:20080507:concurrent)を実際にマルチコアマシンで走らせてみた。
そこそこ時間がかかったけれど、時間をはかるのを忘れたので、どれくらいかかったのかはよくわからない。あと、一回、メモリ確保関連っぽいエラーがでたけれど、もう一度やったらでなかったので無視しました。
使い方
$ erl -smp -noshell -s problem27 main 999 ..... (443,909) 0 (-554,110) 0 (845,231) 1 (-953,989) 0 (-355,-890) 0 (443,910) 0 (845,232) 0 (-953,990) 0 (-753,221) 1 (-160,459) 1 (-355,-889) 0 The answer: {71,-61,971} (644,735) 1 (-554,111) 1 (-753,222) 0 (241,47) 4 (-160,460) 0
参考
- 過去の30分プログラム
- 過去のバージョン
- Problem27 - みずぴー日記 - 力づくで解こうとしたバージョン
- Problem27 -並列版- - みずぴー日記 - それを並列化した