digital 千里眼 @abp_jp

アナログな日常とデジタルの接点

『日本の Adblock Plus 用フィルタ』コミッターの日常(Mercurial の使い方)

現在コミッターが少なくコンフリクトする状況はほとんど発生しないので、マージについて解説はしません

MercurialPerl を使えるようにしておく

(日本語が通るかどうかは未確認)

ソースをローカルにダウンロード(初回のみ:毎回やる必要はない)

$ 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 等の特定 SCM のログに依存しないことで、別の SCM へ移行しやすくなる
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'

日本のフィルタ作成プロジェクト参加者募集中

あなたもコミッターとしてぜひ