Mercurial 3.6 Sprint 参戦メモ

ちょっとFacebook Londonまで行ってオフラインミーティングに参加してきました。 Mercurial Sprint 分散バージョン管理システム Mercuiralの半年に一度ペースで実施されるオフラインミーティングです。 公式Wikiのミーティング一覧を見ると、もう10回以上開…

ISUCON5の予選に参加して惨敗してきました #isucon

ISUCON5の予選に参加して惨敗してきました。チーム名は「T・D・U!T・D・U!」。大学で同じ研究室だった友達を誘った&&「googleの大学名の検索結果がおかしくなった事件」の画像の作成者がチームメイトだったので、この名前にしてみました。 事前準備 僕以外…

generaldeltaを有効にしてmercurialのリポジトリサイズを減らす

Mercurialのリポジトリの履歴のフォーマットは通常のフォーマット以外にgeneraldeltaというものが有ります。 http://mercurial.selenic.com/wiki/GeneralDelta と偉そうに言ってみましたが、NetBSDリポジトリに関するMLのツイートをtwitterで見て初めて知り…

#kyon_kao_wedding と #real_dvcs に参加してきました。

きょんさん、かおりさん、ご結婚おめでとうございます! という事で、参加してきました。 #kyon_kao_wedding ガチ発表と様々なのろけの温度差にやられました。ご結婚おめでとうございます。ライフ尽きました。 #real_dvcs アンチパータンがいっぱい紹介され…

「Webアプリエンジニア養成読本」をいただきました。

刊行記念イベントの予約方法の難易度が高いことで話題の「Webアプリエンジニア養成読本[しくみ,開発,環境構築・運用…全体像を最新知識で最初から!]」を技術評論社様からいただきました。ありがとうございます。 Webアプリエンジニア養成読本[しくみ、開発、…

gitworkflowについての雑感

誰得UNIX-Blog: git-flowでもgithub flowでもない、Git本家推奨のワークフロー http://t.co/WC3NmN0Yy3 @troter の熱い解説を待とう— V (@voluntas) 2014, 2月 2 振られたので。詳しい内容はリンク先をどぞー。 gitworkflow 日本語訳 git reset 特徴的という…

2013年のMercurialの主な変更点 #mercurialjp

このエントリはMercurial Advent Calendar 2013 の18日目です。 3ヶ月に一度メジャーリリースのあるMercurialはこの一年で2.4から2.8までバージョンアップしました。その間にあった主な変更点をまとめたいと思います。 機能追加 Command enable secret phase…

MQの適用済みパッチをrebaseする #mercurialjp

このエントリはMercurial Advent Calendar 2013 の16日目です。 MQを使っていて困るのが、ファイル名の変更です。 あるファイルAに対してパッチaを作成していて 最新版を取り込んだらファイルAはファイルBに変更されていて 最新のソースにパッチaが簡単に適…

hg cloneする時に利用できるリポジトリの指定方法について #mercurialjp

このエントリはMercurial Advent Calendar 2013 の7日目です。*1 hg cloneするときのURLについて書きます。 基本編 通常hg cloneに次のようなURLを渡すことでリポジトリをクローンすることができます。 $ hg clone path/to/local/repo $ hg clone file:///ab…

最近のyard パーフェクトRuby Advent Calendar 2日目

このエントリは パーフェクトRuby Advent Calendar の2日目のエントリです。 1日目のエントリはパーフェクトRuby Advent Calendar 2013(1日目) - すがブロです。 yard diff いきなりですが、パーフェクトRubyで知った最高に便利なコマンドは yard diff です…

自分用のRevsetsを定義する。 #mercurialjp

このエントリはMercurial Advent Calendar 2013 の1日目です。 MercurialにはRevsetsというリビジョン郡を指定するための条件を記述するDSLが組み込まれています。Revsetsに関しては過去のAdvent Calendarのエントリにわかりやすい解説があるのでそちらを参…

GTUG Girls #14 でGitのハンズオンの講師を行いました

git

参加者の皆さん、主催者の @yanzm さん、会場提供のドワンゴさん、チューターとして手伝ってくれた @kana1 さん、 @sinsoku_listy さんお疲れ様でした。 当日の資料とtogetterのまとめです。 GTUG Girls原稿 第14回GTUG Girls Meetup 「Gitを使ってみよう」 …

Rhodecode Enterpriseのライセンス

Git/MercurialのリポジトリをホスティングするRhodecodeというWebアプリケーションが有ります。 WebUIでユーザ権限の設定やリポジトリの追加、Pull-Requestなどが行える OSSのアプリケーション です。 いままで、GPLv3で配布されていたRhodecodeですが、2013…

PyCon APAC 2013 開催期間中に勢いで作成したMercurial関連のスライド

twitterでも流しましたが、勢いで作成したスライドです。PyCon APAC 2013 Sprintの成果ということで。 英語はリリースノートからのコピペとかです。 Mercurial Update 2012/08-2013/09 PyCon APAC 2013 Sprint Short Introduction of Mercurial Evolve Exten…

hg rebase が3-way mergeしてくれるという話

hg rebaseは3-way mergeします。 mercurialでhg graftは3-way mergeしてくれるのが売りだけど、hg rebaseはどうなんだっけ?という話がよく出るので。 以下、試したログ % hg version | head -n1 Mercurial Distributed SCM (version 2.7.1) % hg init rebas…

mercurialでgit new-workdir

ローカルのリポジトリをコピーするための専用のコマンドはmercurialには無い。*1 単にcloneすればよい。 hg clone <repository> <new_workdir_path> 追記: git new-workdirは.git以下のファイル郡をsymlinkで共有しているので、元のリポジトリのコミットがnew_workdirでも参照できるが、hg </new_workdir_path></repository>…

tmuxの設定ファイルを再読み込みする。もしくは複数のコマンドを実行するキーバインドを定義する。

tmux-1.8で確認しています。 ググったら、こういう設定たくさん出てくる。けど、この設定では(1.8では?)起動時に警告が表示される。 bind-key C-r source-file ~/.tmux.conf ; display-message "Reloaded." 正しくはこう。セミコロンをバックスラッシュでエ…

TokyoMercurial#8 を開催しました。 #TokyoMercurial #mercurialjp

2013/06/23(日)にTokyoMercurial#8を開催しました。 TokyoMercurial 公式ページ TokyoMercurial#8 まとめページ やったこと 国際化されたマニュアル(Manpage, HTML)を生成するパッチの修正 RhodeCodeのメッセージリソースをTransifexで翻訳 宝塚記念観戦 次回…

社会復帰しました。

社会復帰しました。最近はてブでも話題になったフォトブック作成サービスを運営している会社にお世話になります。

Mercurial-2.6でhgwebからイシュトラッカーにリンクを張る

前回のhgwebからイシュトラッカーにリンクを張るではInterhgExtensionを利用しました。が、InterhgExtensionはMercurial-2.6からobsoleteとなりました。 というのも、InterhgExtension相当の機能はwebsubテンプレートフィルターという形でhgwebに取り込まれ…

Mercurial-2.6から追加されたunionスキームについて調べてみた。

Mercurial-2.6から追加されたunionスキームについて調べてみた。 Mercurial-2.6からリポジトリ指定時にunionというスキームが指定できるようになりました。 unionを利用すると、次の形式で指定した2つのローカルリポジトリの履歴をミックスして閲覧できるよ…

Mercurial-2.6の並列になったupdateの注意点

いくつか注意点があることを id:flying-foozy さんに指摘してもらったので紹介します。 並列updateで10万規模のファイルを一度に更新するとlinux kernelでsoft lockupと誤認される 10万規模のファイルを更新するとlinux kernelでsoft lockupと誤認されるよう…

Mercurial-2.6-rcの並列になったupdateをmozilla-centralで試す

rhodecodeのリポジトリよりずっと巨大なmozilla-centralでMercurial-2.6-rcの並列になったupdateを試してみた。 mozilla-centralの大きさはこんな感じ。13万リビジョン、7万8千ファイルある。 % hg tip リビジョン: 129561:aa620f3fc2f7 タグ: tip ユーザ: M…

Mercurial-2.6-rcの並列になったupdateを試す

多数のパフォーマンスチューニングを含むMercurial-2.6のリリース候補版がリリースされた。今回のリリースからhg updateの処理が並列化されるようになったので試してみた。 インストール バージョンを指定してインストール。 % pip install -U mercurial==2.…

DataMapperでOptimisticLock(楽観ロック)を利用する

dm-core-1.2.0の話です。 DataMapperでOptimisticLock(楽観ロック)を実現するプラグインはいくつか検索でヒットするのですが、古すぎて利用できなかったり、UPDATE文のWHERE句に条件が入るのではなく、プログラム側で判断しているためアトミック性がなかった…

DataMapperのdm-migrationsのマイグレーションファイルの通し番号は重複していても問題ない

dm-migrations-1.2.0の話です。 dm-railsで次のようにdm-migrationsのマイグレーションファイルを生成すると、001から始まる通し番号のマイグレーションファイルが作成されます。 $ bundle exec rails generate migration create_users invoke data_mapper c…

DataMapperで比較的高速にidだけ取得する

dm-core-1.2.0の話です。 現在の検索条件でidだけ取得したい、、10000件くらい。って要望、よくあると思う。:fieldsで指定しても、モデルのインスタンスを作るため、sqlを直接実行した時にはかなわなかったりする。 なので、DataMapper::Collectionに次のよ…

DataMapperとMySQLの組み合わせでDDLにコメントを含める

dm-core-1.2.0の話です。 DDLにコメントを含めたい!という要望があったので。 モンキーパッチ # dm-core-1.2.0/lib/dm-core/property.rb # commentを定義可能にする module DataMapper class Property accept_options :comment attr_reader :comment end en…

DataMapperでinに空の配列が渡された時になんとか空のコレクションを返す

dm-core-1.2.0の話です。 DataMapperはinの条件に配列を渡すと次のように良い感じで検索してくれる。 class User include DataMapper::Resource property :id, Serial property :name, String end User.all(id: [1, 2, 3]) # SELECT "id", "name" # FROM "us…

DataMapperのクエリチェインが使えない(場合の)話

dm-core-1.2.0の話です。 DataMapperのクエリチェイン(正式名称しらない。。)は特定の条件下(DataMapper::Collection#union(|, +))で利用できない理由と、回避策を調べた。 長いです。 class User include DataMapper::Resource property :id, Serial proper…