Darcs リポジトリに関する情報を照会する Haskell プログラムを作成したいと考えています。darcs 実行可能ファイルを呼び出して結果を解析する代わりに、darcs ライブラリを直接使用したいと思います。「非常に多くの作業が進行中」であり、「安定した API が不足している」と言われていますが、使用可能のようです。
このモジュールから始めてdarcsdenのソースコードを勉強することで私の質問に答えることができると思いますが、知識のある人がそのような研究を補足するためにコメント付きの紹介を提供してくれると私だけでなく役立つかもしれないと思います.
というわけで、具体例を挙げます。
特定のファイルについて、そのファイルに影響を与えた最新のパッチと、パッチの日付、作成者、および名前を計算するにはどうすればよいですか? ソリューションで使用されている主要なライブラリ関数を説明すると、非常に役立ちます。
編集:
darcs のソース コードに慣れていない人にとっては明らかではないかもしれないいくつかの注意事項を次に示します。私はジェイソン・ダギットの修士論文からそれらを学びました.ガネーシュが与えた答えを理解するのに役立つことを願っています.
Darcs では、パッチには、パッチの適用前後のリポジトリの状態を表す前後のコンテキストがあります。ソース コードでは、これらのコンテキストは、パッチのタイプでファントム タイプを使用してモデル化されます。これらの幻のタイプは目撃者と呼ばれseal2
、それらを取り除くために使用されます。
パッチのリストでは、最初のプレコンテキストと最後のポストコンテキストのみがタイプで表されます。他のすべてのコンテキストは、存在型を使用して隠されています。Darcs では、順リスト (FL と呼ばれる) と逆リスト (RL と呼ばれる) が定義されています。逆順リストはパッチを逆 (時系列) に保存します (darcs によってモジュロパッチの並べ替えが行われます)。リバース リストを使用して、先頭位置にある最新のパッチにアクセスできます。名前に RL を含むすべての関数は、そのような逆リストを作成または操作します。