『日本の Adblock Plus 用フィルタ』コミッターの日常(Mercurial の使い方)
現在コミッターが少なくコンフリクトする状況はほとんど発生しないので、マージについて解説はしません
Mercurial と Perl を使えるようにしておく
- Windows なら Cygwin でコマンドラインから利用できる
- エクスプローラのような TortoiseHg と ActivePerl を組み合わせて使うのもありだろう
(日本語が通るかどうかは未確認)
ソースをローカルにダウンロード(初回のみ:毎回やる必要はない)
$ hg clone https://adblock-plus-japanese-filter.googlecode.com/hg 適当な複製名
- 「適当な複製名」ディレクトリ以下にソースがダウンロードされる
適当な複製名 │ abp_jp_general.txt (汎用フィルタ) │ abp_jp_site_specific.txt (サイト別フィルタ) │ ├─build │ prepare2commitAll.bat (両方のフィルタの日付を現在時に合わせ、チェックサムを作成) │ prepare2commitGeneral.bat (汎用フィルタの...以下同文) │ prepare2commitSiteSpecific.bat (サイト別フィルタの...以下同文) │ ├─html │ subscribe.html ("abp:subscribe?location=" から始まる特殊リンク用 HTML) │ └─pl addChecksum.pl (チェックサムを更新) updateDateString.pl (日付更新) validateChecksum.pl (チェックサムの妥当性を検査)
既にソースがローカルにあるなら、作業前に最新にしておく
pull でサーバーへ新しいソースがあるか問い合わせ、あったらローカルに持ってくる(持ってくるだけでローカルのソースにはまだ反映されない)
$ hg pull
update でローカルのソースを更新
$ hg update
これでローカルのソース(ABP のリスト)を編集できる
更新はテキストファイルを書き換えるだけ
サーバーにアップロード前に日付とチェックサムを更新
更新日を現在に更新し、ファイルの破損防止のチェックサムも更新する Perl スクリプトを実行する(手を入れたファイルに応じて ALL General SiteSpecific を使い分け)
$ build/prepare2commitAll.bat
更新を確定
$ hg commit -m '何を更新したかを簡潔にコメント(英語で)'
サーバーへアップロード
$ hg push
途中でアカウント名とパスワードを聞かれる(要コミッター権限なので申請してください)
これだけ。簡単でしょ
更新履歴に追加
このプロジェクトでは、更新履歴 を書き残すようにしている。理由としては以下が挙げられる
Mercurial の .hgrc のカスタマイズ
こんなの使ってます(使いこなせていないので、カッコイイやり方教えてください)
[ui]
username = ユーザー名 <メールアドレス>
ignore = ~/.hgignore[alias]
clog=log -r tip:0 -fP .
show=log --color=always -pr
slog=log --template '{rev}:{node|short} {desc|firstline}\n'
cm = commit --message
uc = update --check
: = summary
? = compass
. = status[diff]
git=True[extensions]
color=
graphlog=
hgext.fetch=
hgext.graphlog=
hgext.keyword=
hgext.mq=
progress=[defaults]
glog = --template 'Changeset: {rev}:{node|short} {tags}\nSummary: {desc|firstline|fill68|tabindent|tabindent}\n\n'