はじめに
過去に私が Haskell を学び始めた時、 真っ先に疑問に思ったことは モナド の存在だった。 当時は全くと言っていいほど理解できなかったが、 最近Haskellを学び直して ようやく理解することができた(と思う)。 という訳で、現時点での私のモナドへの理解を示すためにこの記事を書く。 ここではモナドの本質が何なのか概要を示す。 正確な説明は 数多あるモナドについてのチュートリアル を参照されたい。
過去に私が Haskell を学び始めた時、 真っ先に疑問に思ったことは モナド の存在だった。 当時は全くと言っていいほど理解できなかったが、 最近Haskellを学び直して ようやく理解することができた(と思う)。 という訳で、現時点での私のモナドへの理解を示すためにこの記事を書く。 ここではモナドの本質が何なのか概要を示す。 正確な説明は 数多あるモナドについてのチュートリアル を参照されたい。
mercurialでは一度おこなったコミットは基本的には取り消せません。ブランチを作成するためにもコミットが必要なため、gitのようにカジュアルにブランチのリネームを行う事ができません。ここではそんな中でも何とかブランチをリネームするための3つの方法を紹介したいと思います。
「トピックブランチをばんばん作ってある程度のところで統合ブランチへマージする」 という開発スタイルを行っていたとしましょう。 例えばバージョン1をベースにガリゴリとトピックブランチを作って統合ブランチへマージし、 一区切りついたところでバージョン2としてリリースするといった具合です。
マージするトピックの数が数個であれば特に問題はないのですが、
10や20になってくると git log を眺めてもどのトピックブランチが取り込まれているのか一目では分からなくなってきます。
例えば git log master..$topic の出力が空であれば $topic が取り込まれていないことは分かりますが、
10や20もトピックブランチがある状態ならばこんな方法で1個づつ調べる気は起きません。
どうにかして統合ブランチへ取り込まれたトピックブランチの一覧を抽出する方法はないでしょうか。
Mercurialは、Merucurial拡張という拡張モジュールを使って、Merucrialの挙動をいろいろ拡張できるようになっています。 デフォルトのままだと使いにくいので、Mercurialを使う上で便利にしてくれる拡張を設定しておきましょう。 デフォルトでバンドルされているMercurial拡張は、Using Mercurial Extensionsにまとめられています。
今回はGit使いがMercurial使いに転職するときに、Gitで実現できたことをMercurialで実現するための、組み込み拡張、および、サードパーティ製の拡張について紹介します。
SAStrutsで複雑なレイアウトのHTMLを組み立てるときtiles:insert、tiles:putを利用していました。しかし次の問題点からtiles:putの利用を取りやめてしまいました。
そこでこれらの問題を解決するために、Railsのcontent_forに似せたカスタムタグライブラリtags-captureを作りました。
「トピックブランチをばんばん作ってある程度のところで統合ブランチへマージする」 という開発スタイルを行っていたとしましょう。 トピックブランチでの作業中や統合ブランチへマージする前など、 状況確認のためにトピックブランチに対してどれだけ変更が行われているか調べることはよくあります。
コミットした数が大したことないのであれば単に git log を実行して
最初の数コミット分だけ眺めれば済む話なのですが、
余分なものが表示されると五月蠅いですし、
コミット数が増えてくるとさすがに面倒になってきます。
どうすれば必要な分だけ列挙することができるでしょうか。
mavenとclosure-compilerの統合方法はclosure-compilerのイシュートラッカーのIssue 37: Maven integrationで紹介されています。 ただ、ここで紹介されている方法は、リポジトリにコミットされているclosure-compilerのjarを呼び出す方法です。 なるべくjarをコミットしてたくないので、mavenの依存関係としてダウンロードされたjarを利用する方法について調べてみました。
テストしたい機能がデプロイされているかどうか確認するためにアプリのリビジョン番号を埋め込というのはよくある話です。
mavenでこの機能を実現するプラグインが存在しないか確認したのですが、とくに存在しなかったようなので、弊社のプロジェクトでは次の様な設定をpom.xmlに設定してリビジョン番号を取得しています。
git submodule
で他のリポジトリ(以下「サブモジュール」)の内容を埋め込むことが簡単にできるのですが、
ごく稀に追加したサブモジュールを削除したくなる場合があります。
サブモジュールの追加や更新は git submodule add や git submodule update で簡単にできるものの、
何故か git submodule rm サブコマンドはありません。
どうすれば削除できるのでしょうか。