Cygwin 併用時の CVS からの hg convert
Windows 上で CVS リポジトリから hg convert
する場合、特に Cygwin 環境と併用しているようなケースでは、改行コード周りで色々混乱する可能性があります。
以下、CVS リポジトリから hg convert
する際に、あらかじめ確認しておくべき事柄を列挙しておきます。
※ CVSNT の cvs コマンド併用時の hg convert
における障害情報あり
hg convert 時に実行される cvs コマンドの確認
Cygwin 固有のパス設定が自動的に適用される可能性があるため、Cygwin の対話的シェル上での which cvs
や cvs --version
等で特定される cvs コマンドは、hg convert
時に使用される cvs コマンドとは異なる場合があります。
そのため、hg convert
で実行される cvs コマンドの確認は、以下の様に hg コマンド経由で行った方が良いでしょう。
$ hg --config alias.cvsversion='!cvs --version' cvsversion
2014 年を振り返る&2015 年の抱負
Mercurial に関するコミュニティ由来の成果(2014年版)
本エントリは、2014年の一年間に、ML/twitter/勉強会といったコミュニティから上がった情報/要望の中で:
- Mercurial 本体に取り込まれた修正の契機になったもの
- Mercurial 本体に取り込まれてはいないものの、何らかの成果に結びついたもの
- 『今後の作業のネタ』(= バックログ)として認識されているもの
上記に該当するものを、情報提供への感謝の意味も込めて、列挙したものです。
『気になった点に関して、情報提供をする』だけでも、十分開発に貢献できる事の証拠とも言えます。
今後も、Mercurial に関して疑問/質問/要望等があれば、お気軽に情報をお寄せください > 利用者の皆様
情報をお寄せ頂く手段に関しては、"Mercurial で困った時に" をお読みください。
また、抽出が大変だったので本エントリでは列挙しませんでしたが、メッセージ翻訳に関する不具合報告/要望等も随時反映しておりますので、こちらに関してもお気軽にお知らせください&お知らせ頂いた皆様、ありがとうございました!
なお、以前のものは、以下から参照できます。
本体に取り込まれた修正(changed by 藤原)
以下に列挙するものは、コミュニティからの情報を元に私が提案した修正のうち、Mercurial 本体に取り込まれたものです。
なお、私の手による修正履歴一覧から、記憶を頼りに目視で抽出したものなので、『俺の情報を元にパッチ作成しておいて手柄を独り占めかよ!?』的なものに心当たりがある方は、お気軽に情報をお寄せください(笑)。
TokyoMercurial No.10
昨年末は、色々バタバタしてしまい、年が明けてからエントリを書いてます…… orz
TokyoMercurial No.10 に参加してきました。
運営の id:troter 氏ならびに参加者の皆様、お疲れ様でした。
作業目標&消化状況
今回の TokyoMercurial の個人的な目標は、以下の2件です。
- 3.2.2 向けのメッセージ翻訳の実施
- 積み残している TODO リストの消化
前者に関しては、更新された翻訳対象メッセージが少ないこともあって、比較的簡単に翻訳&反映は完了。
OpenSolaris 勉強会 2014.08
日本OpenSolarisユーザーグループ主催の Tokyo OpenSolaris 勉強会 2014.08 に参加してきました。
Solaris Internals 枠は、第11章「Kernel Memory」を読了することができました。
メモリアロケータの強力なデバッグ支援機能をガッチリ理解したので、どんなクラッシュダンプが来ても平気です(笑)。
Solaris Internals 枠は、次回から第12章 "Hardware Address Translation" に取り掛かります。
なお、今回は飛び入りでテープドライブな話も。
テープの話でもすればいいの? http://t.co/aBZBtqxM8T #osoljp
— K.Namba/ご注文は910ですか? (@ipv6labs) 2014, 8月 29
テンプレート関数 revset() の利用
hg log で特定のファイルの履歴を取る時に そのファイルの変更リビジョンから次の変更の直前までにあるすべてのタグを同時に取得する方法は何かないですかねえ?
#mercurialjp
— Kaz Nishimura (@kazssym) 2014, 8月 8
上記ツイートを契機としたやり取りの過程で、Mercurial 3.0 からテンプレート定義中で revset()
が使えるようになったのを、すっかり失念していたことに気付きました……orz
このまま放置すると、また忘れてしまいそうなので、何か実際的な処理で使って、しっかり記憶しておきたいところです。
何か良い題材はないかと考えたところ、先日公開したrevsets に関するエントリで例示している以下の処理が、まさに revset()
のユースケースにピッタリなことを思い出しました。
BRANCH=foo hg log -r "roots(branch($BRANCH))" --template "{rev}\n" | while read root do hg log -r "heads(descendantsin($root, branch($BRANCH)))" \ --template "$root {rev}\n" done | while read start end do hg diff -r "p1($start)" -r "$end" done
なお、while ループ内での revsets 問い合わせが非常に複雑なので、簡略化のため以下の様なエイリアス descendantsin
の定義を仮定しています。
[revsetalias] descendantsin($1, $2) = (($1)::) and ($2) and not (((($1)::) and not ($2))::)
但し、エントリ執筆時点の最新版である Mercurial 3.1 では、revsetalias によるエイリアス定義は revset()
の中で使用できません…… orz なので、例としてはエイリアス定義を使っていますが、実際の利用ではエイリアス定義を使わないようにしてください。
(※ 2014-08-28 追記) 修正が取り込まれましたので、2014-11 にリリースされる 3.2 からは、revset()
中でもエイリアスが使えるようになります。
元の処理では、hg log
を二段重ねにしていますが、テンプレート関数 revset
を使うことで、これらを単一の hg log
に集約することができます。
OpenSolaris 勉強会 2014.07
日本OpenSolarisユーザーグループ主催の Tokyo OpenSolaris 勉強会 2014.07 に参加してきました。
今回は、いつもの Solaris Internals 枠に加えて、「OpenSolarisを移植しよう 〜DEC Alphaの場合〜」と題して、林さんによる DEC Alpha プロセッサへの OpenSolaris 移植の状況報告がありました。
移植の裏話もさることながら、OpenSolaris におけるアドレス境界違反周りの対応に関する情報が、個人的には一番衝撃的な話でしたが、ソースコードの確認とか、実環境での検証とかがあるため、詳細は追って別エントリとして公開しようと思います。
っていうか、詳細を書こうと思っていたら、参加報告エントリの公開が、丸々一ヶ月程遅れてしまったので、とりあえず後回しにするだけなのですが……
Solaris Internals 枠は順調に進んでいて、この調子なら 2014.08 で "Chapter 11: Kernel Memory" は読了できそうな感じですね。
Solaris Internals: Solaris 10 and OpenSolaris Kernel Architecture
- 作者: Richard Mauro, Jim McDougall
- 出版社/メーカー: Prentice Hall
- 発売日: 2006/07/10
- メディア: ハードカバー
- 購入: 2人 クリック: 28回
- この商品を含むブログ (16件) を見る