Commits

Takumi IINO committed 4e08674

リビジョングラフを作成

  • Participants
  • Parent commits 7b22da1

Comments (0)

Files changed (2)

 
 # Add any Sphinx extension module names here, as strings. They can be extensions
 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinxjp.themecore']
+extensions = ['sphinxjp.themecore', 'sphinx.ext.graphviz']
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
 「ヘッド」 (HEAD) と呼びます。
 次のグラフではリビジョン2がヘッドです。
 
-  ::
+  .. graphviz::
 
-    TODO
-    
-    図 リビジョングラフ
+    digraph {
+      rankdir="LR"
+      0 [ ]
+      1 [ ]
+      2 [ style = "filled" fillcolor = "red" ]
+      0 -> 1
+      1 -> 2
+    }
 
 マルチプルヘッドとは
 ^^^^^^^^^^^^^^^^^^^^
 以下の履歴ツリーで言えば、
 リビジョン 2 の後で生成されたリビジョン 3 はブランチになります。
 
-  ::
+  .. graphviz::
 
-    TODO
-    
-    図 リビジョングラフ
+    digraph {
+      rankdir="LR"
+      0 [ ]
+      1 [ ]
+      2 [ ]
+      3 [ style = "filled" fillcolor = "red" ]
+      0 -> 1
+      1 -> 2
+      1 -> 3
+    }
 
 ヘッドを親にして新たなリビジョンを作成した場合は、ブランチになりません。
 
-  ::
+  .. graphviz::
 
-    TODO
-    
-    図 リビジョングラフ
+    digraph {
+      rankdir="LR"
+      0 [ ]
+      1 [ ]
+      2 [ ]
+      3 [ style = "filled" fillcolor = "red" ]
+      0 -> 1
+      1 -> 2
+      2 -> 3
+    }
 
 ブランチによってヘッドが複数ある状態を、
 「マルチプルヘッド」 (multiple heads) と呼びます。
 以下の履歴グラフでは、
 リビジョン 3 が "RELEASE" という名前付きブランチに属します。
 
-  ::
+  .. graphviz::
 
-    TODO
-    
-    図 リビジョングラフ
+    digraph {
+      rankdir="LR"
+      0 [ ]
+      1 [ ]
+      2 [ ]
+      3 [ style = "filled" fillcolor = "red" ]
+      subgraph cluster_X {
+        style = "invis"; /* invisible frame */
+        0
+        1
+        2
+      }
+      subgraph cluster_Y {
+        label = "named branch \"RELEASE\"";
+        labelloc = "b" /* bottom */
+        3
+      }
+      0 -> 1
+      1 -> 2
+      1 -> 3
+    }
 
 CVS や Subversion 等の多くの SCM ツールで言うところの「ブランチ」は、
 Mercurial での「名前付きブランチ」とほぼ等価と考えてよいでしょう
 新規リビジョンから先を「名前付きブランチ」として扱うこともできますが、
 この場合、いわゆる「ブランチ」状態は発生しません。
 
-  ::
+  .. graphviz::
 
-    TODO
-    
-    図 リビジョングラフ
+    digraph {
+      rankdir="LR"
+      0 [ ]
+      1 [ ]
+      2 [ ]
+      3 [ style = "filled" fillcolor = "red" ]
+      4 [ style = "invis" ]
+      subgraph cluster_X {
+        style = "invis"; /* invisible frame */
+        0
+        1
+        2
+        4
+      }
+      subgraph cluster_Y {
+        label = "named branch \"RELEASE\"";
+        labelloc = "b" /* bottom */
+        3
+      }
+      0 -> 1
+      1 -> 2
+      2 -> 4 [ style = "invis" ]
+      2 -> 3
+    }
 
 これは、一般的な運用であれば、ブランチ元の親リビジョンに対して、
 将来的に新たな子リビジョンが生成されることが想定できますので、
 長期的なスパンで見た場合には「ブランチしている」と言えるでしょう。
 
-  ::
+  .. graphviz::
 
-    TODO
-    
-    図 リビジョングラフ
+    digraph {
+      rankdir="LR"
+      0 [ ]
+      1 [ ]
+      2 [ ]
+      3 [ ]
+      4 [ style = "dotted" ]
+      subgraph cluster_X {
+        style = "invis"; /* invisible frame */
+        0
+        1
+        2
+        4
+      }
+      subgraph cluster_Y {
+        label = "named branch \"RELEASE\"";
+        labelloc = "b" /* bottom */
+        3
+      }
+      0 -> 1
+      1 -> 2
+      2 -> 4
+      2 -> 3
+    }
 
 名前付きブランチのマージ
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
 2つの名前付きブランチ B_one と B_two を想定します。
 
+  .. graphviz::
+
+    digraph {
+      rankdir="LR"
+      0 [ ]
+      1 [ ]
+      2 [ ]
+      3 [ ]
+      4 [ ]
+      subgraph cluster_X {
+        label = "named branch \"B_one\"";
+        labelloc = "b" /* bottom */
+        0
+        1
+        2
+        4
+      }
+      subgraph cluster_Y {
+        label = "named branch \"B_two\"";
+        labelloc = "b" /* bottom */
+        3
+      }
+      0 -> 1
+      1 -> 2
+      2 -> 4
+      2 -> 3
+    }
+
 作業領域の親リビジョン (= マージ先) が B_one、
 マージ対象 (= マージ元) が B_two の場合、
 マージによって生成されるリビジョンは B_one ブランチに属します。
 
-  ::
+  .. graphviz::
 
-    TODO
-    
-    図 リビジョングラフ
+    digraph {
+      rankdir="LR"
+      0 [ ]
+      1 [ ]
+      2 [ ]
+      3 [ ]
+      4 [ style = "filled" fillcolor = "red" ]
+      5 [ ]
+      subgraph cluster_X {
+        label = "named branch \"B_one\"";
+        labelloc = "b" /* bottom */
+        0
+        1
+        2
+        4
+        5
+      }
+      subgraph cluster_Y {
+        label = "named branch \"B_two\"";
+        labelloc = "b" /* bottom */
+        3
+      }
+      0 -> 1
+      1 -> 2
+      2 -> 4
+      2 -> 3
+      4 -> 5
+      3 -> 5
+    }
 
 この逆に、
 作業領域の親リビジョンが B_two、マージ対象が B_one の場合、
 マージによって生成されるリビジョンは B_two ブランチに属します。
 
-  ::
+  .. graphviz::
 
-    TODO
-    
-    図 リビジョングラフ
-
+    digraph {
+      rankdir="LR"
+      0 [ ]
+      1 [ ]
+      2 [ ]
+      3 [ style = "filled" fillcolor = "red" ]
+      4 [ ]
+      5 [ ]
+      subgraph cluster_X {
+        label = "named branch \"B_one\"";
+        labelloc = "b" /* bottom */
+        0
+        1
+        2
+        4
+      }
+      subgraph cluster_Y {
+        label = "named branch \"B_two\"";
+        labelloc = "b" /* bottom */
+        3
+        5
+      }
+      0 -> 1
+      1 -> 2
+      2 -> 4
+      2 -> 3
+      4 -> 5
+      3 -> 5
+    }
 
 名前付きブランチをなぜ使うのか
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^