2

私は、gitツリーを取得してコミットとマージを有向グラフ(git log --graphなど)として表示するHTMLおよびJavascriptアプリケーションに取り組んでいます。Reingold-Tilfordの整頓されたアルゴリズムについて少し読みましたが、親と子の両方を共有するノードを持つグラフには当てはまらないようです。目的の出力の例(テキストとしてですが、d3jsやRaphaelなどのグラフライブラリを調べています):

*   - 1 day ago
|
*   - 2 days ago
|\
| * - 3 days ago
|/
*   - 4 days ago
|
*   - 5 days ago

すでにこれを処理しているライブラリはありますか?このようなグラフをレンダリングする例は(任意の言語で)ありますか?最後の手段として、少し密度が高いものの、 git自体( https://github.com/git/git/blob/master/graph.c )からグラフを再現しようと思います。

助けてくれてありがとう。

4

2 に答える 2

1

まず、rubygem の Git を確認してください: http://rubygems.org/gems/git そうすれば、多くの作業を節約できます。

次に、d3.js を使用してみましたが、非常に複雑で強力であることがわかりました。作成しようとしているグラフはそれでうまく機能し、d3_rails gem もあります: http://rubygems.org/gems/d3_rails

ただし、最小限の複雑さ (ドリルダウンなどなし) を表示するためにいくつかの形状の単純なグラフィカル表現を行うだけでよい場合は、HTML5 のキャンバスの使用を考えるかもしれません。非常に使いやすいですが、d3.js のパワーが不足しています。

于 2012-09-28T16:26:57.667 に答える
1

私自身のかなりひどいグラフを実装してしばらくした後、GitLabとそのオープン ソース GitHub 実装について聞きました。彼らは、GitHub の「ネットワーク」グラフの同様の実装を持っています。これは、リポジトリにあります。

問題のファイルの一部:

  • lib/gitlab/graph/commit.rb
  • lib/gitlab/graph/json_builder.rb
  • ベンダー/資産/javascripts/branch-graph.js

いくつかの変更により、彼らがどのようにネットワーク グラフを実装し、コードのバージョンを使用して大成功を収めているかを理解することができました。

于 2012-11-06T17:53:09.703 に答える