Commits

Takumi IINO committed d4b960d

「入門 Git」でも「入門 Mercurial」も矢印は順方向なので元に戻します

Comments (0)

Files changed (1)

       A [ ]
       B [ ]
       C [ ]
-      A -> B [ dir = back ]
-      B -> C [ dir = back ]
+      A -> B
+      B -> C
     }
 
 作業領域の内容が、リビジョン C の状態になっているとします。 この時、「リビジョン C は作業領域の親リビジョンである」と言えます。
       B [ ]
       C [ ]
       D [ style = "filled" fillcolor = "red" ]
-      A -> B -> C -> D [ dir = back ]
+      A -> B -> C -> D
     }
 
 作業領域を「次に作成される仮想的なリビジョンの格納場所」と考えれば、 より理解できるのではないでしょうか。
       0 [ ]
       1 [ ]
       2 [ style = "filled" fillcolor = "red" ]
-      0 -> 1 [ dir = back ]
-      1 -> 2 [ dir = back ]
+      0 -> 1
+      1 -> 2
     }
 
 マルチプルヘッドとは
       1 [ ]
       2 [ ]
       3 [ style = "filled" fillcolor = "red" ]
-      0 -> 1 [ dir = back ]
-      1 -> 2 [ dir = back ]
-      1 -> 3 [ dir = back ]
+      0 -> 1
+      1 -> 2
+      1 -> 3
     }
 
 ヘッドを親にして新たなリビジョンを作成した場合は、ブランチになりません。
       1 [ ]
       2 [ ]
       3 [ style = "filled" fillcolor = "red" ]
-      0 -> 1 [ dir = back ]
-      1 -> 2 [ dir = back ]
-      2 -> 3 [ dir = back ]
+      0 -> 1
+      1 -> 2
+      2 -> 3
     }
 
 ブランチによってヘッドが複数ある状態を、
         c_1
       }
 
-      c_0 -> c_1 [ dir = back ]
+      c_0 -> c_1
     }
 
 まず作業するためにAliceとBobがリポジトリを複製(hg clone)します。
         b_1
       }
 
-      c_0 -> c_1 [ dir = back ]
-      a_0 -> a_1 [ dir = back ]
-      b_0 -> b_1 [ dir = back ]
+      c_0 -> c_1
+      a_0 -> a_1
+      b_0 -> b_1
     }
 
 Aliceが先に編集してコミットしました。
         b_1
       }
 
-      c_0 -> c_1 [ dir = back ]
-      a_0 -> a_1 -> a_2 [ dir = back ]
-      b_0 -> b_1 [ dir = back ]
+      c_0 -> c_1
+      a_0 -> a_1 -> a_2
+      b_0 -> b_1
     }
 
 Bobも編集を加えてコミットしました。
         b_2
       }
 
-      c_0 -> c_1 [ dir = back ]
-      a_0 -> a_1 -> a_2 [ dir = back ]
-      b_0 -> b_1 -> b_2 [ dir = back ]
+      c_0 -> c_1
+      a_0 -> a_1 -> a_2
+      b_0 -> b_1 -> b_2
     }
 
 Aliceは作業が完了したのでみんなに見てもらうように中央リポジトリに変更を反映します。(hg push)
         b_2
       }
 
-      c_0 -> c_1 -> c_2 [ dir = back ]
-      a_0 -> a_1 -> a_2 [ dir = back ]
-      b_0 -> b_1 -> b_2 [ dir = back ]
+      c_0 -> c_1 -> c_2
+      a_0 -> a_1 -> a_2
+      b_0 -> b_1 -> b_2
     }
 
 Bobも作業が完了したのでみんなに見てもらうように中央リポジトリに変更を反映します。(hg push)
         b_2
       }
 
-      c_0 -> c_1 -> c_2 [ dir = back ]
-      c_1 -> c_3 [ dir = back ]
-      a_0 -> a_1 -> a_2 [ dir = back ]
-      b_0 -> b_1 -> b_2 [ dir = back ]
+      c_0 -> c_1 -> c_2
+      c_1 -> c_3
+      a_0 -> a_1 -> a_2
+      b_0 -> b_1 -> b_2
     }
 
 Bobは中央リポジトリに自分の変更を反映する事は出来ませんが、中央リポジトリの変更を取り込むことが出来ます。(hg pull)
         b_3
       }
 
-      c_0 -> c_1 -> c_2 [ dir = back ]
-      a_0 -> a_1 -> a_2 [ dir = back ]
-      b_0 -> b_1 -> b_2 [ dir = back ]
-      b_1 -> b_3 [ dir = back ]
+      c_0 -> c_1 -> c_2
+      a_0 -> a_1 -> a_2
+      b_0 -> b_1 -> b_2
+      b_1 -> b_3
     }
 
 マルチプルヘッドが出来てしまいました。
         b_3
       }
 
-      b_0 -> b_1 -> b_2 [ dir = back ]
-      b_1 -> b_3 [ dir = back ]
+      b_0 -> b_1 -> b_2
+      b_1 -> b_3
     }
 
 「二重丸」が増えました、これは現在の作業領域がリビジョンBとリビジョンAの内容を含んでいるという事を表しています。
         b_4
       }
 
-      b_0 -> b_1 -> b_2 -> b_4 [ dir = back ]
-      b_1 -> b_3 -> b_4 [ dir = back ]
+      b_0 -> b_1 -> b_2 -> b_4
+      b_1 -> b_3 -> b_4
     }
 
 この状態で初めて中央リポジトリに変更を反映できます。
         b_4
       }
 
-      c_0 -> c_1 -> c_2 -> c_4 [ dir = back ]
-      c_1 -> c_3 -> c_4 [ dir = back ]
-      a_0 -> a_1 -> a_2 [ dir = back ]
-      b_0 -> b_1 -> b_2 -> b_4 [ dir = back ]
-      b_1 -> b_3 -> b_4 [ dir = back ]
+      c_0 -> c_1 -> c_2 -> c_4
+      c_1 -> c_3 -> c_4
+      a_0 -> a_1 -> a_2
+      b_0 -> b_1 -> b_2 -> b_4
+      b_1 -> b_3 -> b_4
     }
 
 コミット済み成果ベースのマージ
         b_2
       }
 
-      c_0 -> c_1 -> c_2 [ dir = back ]
-      b_0 -> b_1 -> b_2 [ dir = back ]
+      c_0 -> c_1 -> c_2
+      b_0 -> b_1 -> b_2
     }
 
 Subversionでは通常コミットする前にsvn updateで中央リポジトリの変更を取り込みます。
         b_3
       }
 
-      c_0 -> c_1 -> c_2 [ dir = back ]
-      b_0 -> b_1 -> b_2 -> b_3 [ dir = back ]
+      c_0 -> c_1 -> c_2
+      b_0 -> b_1 -> b_2 -> b_3
     }
 
 これは「SubversionがリビジョンAの変更とリビジョンB(としてコミットされる予定)の変更をマージしたため」です。
         b_3
       }
 
-      c_0 -> c_1 -> c_2 -> c_3 [ dir = back ]
-      b_0 -> b_1 -> b_2 -> b_3 [ dir = back ]
+      c_0 -> c_1 -> c_2 -> c_3
+      b_0 -> b_1 -> b_2 -> b_3
     }
 
 
         b_4
       }
 
-      b_0 -> b_1 -> b_2 -> b_4 [ dir = back ]
-      b_1 -> b_3 -> b_4 [ dir = back ]
+      b_0 -> b_1 -> b_2 -> b_4
+      b_1 -> b_3 -> b_4
     }
 
 Mercurialではマルチプルヘッドをマージしています。この方法を「コミット済み成果ベースのマージ」と呼びます。
         labelloc = "b" /* bottom */
         3
       }
-      0 -> 1 [ dir = back ]
-      1 -> 2 [ dir = back ]
-      1 -> 3 [ dir = back ]
+      0 -> 1
+      1 -> 2
+      1 -> 3
     }
 
 CVS や Subversion 等の多くの SCM ツールで言うところの「ブランチ」は、
         labelloc = "b" /* bottom */
         3
       }
-      0 -> 1 [ dir = back ]
-      1 -> 2 [ dir = back ]
+      0 -> 1
+      1 -> 2
       2 -> 4 [ style = "invis" ]
-      2 -> 3 [ dir = back ]
+      2 -> 3
     }
 
 これは、一般的な運用であれば、ブランチ元の親リビジョンに対して、
         labelloc = "b" /* bottom */
         3
       }
-      0 -> 1 [ dir = back ]
-      1 -> 2 [ dir = back ]
-      2 -> 4 [ dir = back ]
-      2 -> 3 [ dir = back ]
+      0 -> 1
+      1 -> 2
+      2 -> 4
+      2 -> 3
     }
 
 名前付きブランチのマージ
         labelloc = "b" /* bottom */
         3
       }
-      0 -> 1 [ dir = back ]
-      1 -> 2 [ dir = back ]
-      2 -> 4 [ dir = back ]
-      2 -> 3 [ dir = back ]
+      0 -> 1
+      1 -> 2
+      2 -> 4
+      2 -> 3
     }
 
 作業領域の親リビジョン (= マージ先) が B_one、
         labelloc = "b" /* bottom */
         3
       }
-      0 -> 1 [ dir = back ]
-      1 -> 2 [ dir = back ]
-      2 -> 4 [ dir = back ]
-      2 -> 3 [ dir = back ]
-      4 -> 5 [ dir = back ]
-      3 -> 5 [ dir = back ]
+      0 -> 1
+      1 -> 2
+      2 -> 4
+      2 -> 3
+      4 -> 5
+      3 -> 5
     }
 
 この逆に、
         3
         5
       }
-      0 -> 1 [ dir = back ]
-      1 -> 2 [ dir = back ]
-      2 -> 4 [ dir = back ]
-      2 -> 3 [ dir = back ]
-      4 -> 5 [ dir = back ]
-      3 -> 5 [ dir = back ]
+      0 -> 1
+      1 -> 2
+      2 -> 4
+      2 -> 3
+      4 -> 5
+      3 -> 5
     }
 
   .. warning::
         i_0 [ style = invis ]
         i_1 [ style = invis ]
         i_2 [ style = invis ]
-        s_0 -> i_0 [ dir = back ]
+        s_0 -> i_0 [ dir = none ]
         i_0 -> i_1 [ dir = none ]
         i_1 -> i_2 [ dir = none ]
-        i_2 -> s_1 [ dir = none ]
+        i_2 -> s_1
       }
 
       subgraph cluster_develop {
         label = "develop";
         labelloc = "b" /* bottom */
-        d_1 -> d_2 -> d_3 -> d_4 [ dir = back ]
+        d_1 -> d_2 -> d_3 -> d_4
       }
 
       /* 0 -> 1 [ dir = back ] */
-      s_0 -> d_1 [ dir = back ]
-      d_3 -> s_1 [ dir = back ]
+      s_0 -> d_1
+      d_3 -> s_1
     }
 
 「一連のリビジョンの関連付けを行うために利用する」場合は、息の長いブランチの中で利用される場合が多いです。
         i_1 [ style = invis ]
         i_2 [ style = invis ]
         i_3 [ style = invis ]
-        s_0 -> i_0 [ dir = back ]
+        s_0 -> i_0 [ dir = none ]
         i_0 -> i_1 [ dir = none ]
         i_1 -> i_2 [ dir = none ]
         i_2 -> i_3 [ dir = none ]
-        i_3 -> s_1 [ dir = none ]
+        i_3 -> s_1
       }
 
       subgraph cluster_develop {
         d_i_f0 [ style = invis ]
         d_i_f1 [ style = invis ]
         d_i_1 [ style = invis ]
-        d_1 -> d_i_f0 [ dir = back ]
-        d_i_f0 -> d_i_f1 [ dir = none ]
+        d_1 -> d_i_f0 [ dir = none ]
+        d_i_f0 -> d_i_f1
         d_i_f1 -> d_3 [ dir = none ]
-        d_3 -> d_i_1 [ dir = back ]
-        d_i_1 -> d_4 [ dir = none ]
+        d_3 -> d_i_1 [ dir = none ]
+        d_i_1 -> d_4
       }
 
       subgraph cluster_feature {
         label = "develop/issue/F";
         labelloc = "b" /* bottom */
-        f_1 -> f_2 [ dir = back ]
+        f_1 -> f_2
       }
 
       subgraph cluster_bugfix {
         label = "develop/issue/B";
         labelloc = "b" /* bottom */
-        b_1 [ dir = back ]
+        b_1
       }
 
       /* 0 -> 1 [ dir = back ] */
-      s_0 -> d_1 [ dir = back ]
-      d_3 -> s_1 [ dir = back ]
-      d_1 -> f_1 [ dir = back ]
-      f_2 -> d_3 [ dir = back ]
-      d_3 -> b_1 [ dir = back ]
-      b_1 -> d_4 [ dir = back ]
+      s_0 -> d_1
+      d_3 -> s_1
+      d_1 -> f_1
+      f_2 -> d_3
+      d_3 -> b_1
+      b_1 -> d_4
     }
 
 リビジョンのブランチ名を適切に設定する(イシュートラッカーの番号などを含める)事によって、一つ一つの変更由来が明確になるという利点があります。