{"thread":{"id":"2331","subject":"New ASCII Art","startedAt":"2005-11-02T23:40:30Z","lastAt":"2005-11-03T20:30:28Z","messageCount":2,"participants":["jdl@freescale.com","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"11049","messageId":"E1EXSDW-0005aC-RG@jdl.com","threadId":"2331","inReplyTo":null,"subject":"New ASCII Art","fromName":"","fromEmail":"jdl@freescale.com","sentAt":"2005-11-02T23:40:30Z","receivedAt":"2005-11-02T23:40:30Z","isPatch":false,"sender":{"key":"jdl@jdl.com","avatar":"https://gravatar.com/avatar/75ce9a10b151acd2c28ec4ab2136dba7b2ff1634530bd04b155981a749d08a64?d=mp&s=160"},"body":"Junio,\n\nI see my name over on the TODO list:\n\n    31 Documentation\n    32 -------------\n    33\n    34 * Help Jon Loeliger to find place in the documentation to place\n    35 his drawing.\n\nSo, I have updated drawings for consideration.\nSee if you buy these.  And if so, let's ponder\nwhere they might go.  Then I'll patch 'em in...\n\nI now have four ASCII Art drawings:\n\n    - Fundamental git operations\n    - Git merge operations\n    - Git diff types\n    - Commit DAG Revision Naming\n\njdl\n\n\n\n\nFundamental Git Index Operations\n================================\n\n                     commit-tree\n                      commit obj\n                       +----+\n                       |    |\n                       |    |\n                       V    V\n                    +-----------+\n                    | Object DB |\n                    |  Backing  |\n                    |   Store   |\n                    +-----------+\n                       ^\n           write-tree  |     |\n             tree obj  |     |\n                       |     |  read-tree\n                       |     |  tree obj\n                             V\n                    +-----------+\n                    |   Index   |\n                    |  \"cache\"  |\n                    +-----------+\n         update-index  ^\n             blob obj  |     |\n                       |     |\n    checkout-index -u  |     |  checkout-index\n             stat      |     |  blob obj\n                             V\n                    +-----------+\n                    |  Working  |\n                    | Directory |\n                    +-----------+\n\n\nGit Merge Operations\n====================\n\n                    +-----------+\n                    | Object DB |\n                    |  Backing  |\n                    |   Store   | -------+\n                    +-----------+        |\n                                         |\n                           read-tree -m  |\n  +-----+                  tree obj      |\n  |patch|                                |\n  +-----+           +-----------+        |\n     |              |   Index   | <- - - +\n     +------------->|  \"cache\"  | - - - >+\n git-apply --index  +-----------+        |\n                                         |\n                                         |\n                         read-tree -m -u |\n +-----+                        tree obj |\n |patch|                                 |\n +-----+            +-----------+        |\n    |               |  Working  |<-------+\n    +-------------->| Directory |\n  git-apply         +-----------+\n\n\n\nGit Diff Types\n==============\n\n\n                      diff-tree\n                       +----+\n                       |    |\n                       |    |\n                       V    V\n                    +-----------+\n                    | Object DB |\n                    |  Backing  |\n                    |   Store   |\n                    +-----------+\n                      ^    ^\n                      |    |\n                      |    |  diff-index --cached\n                      |    |\n          diff-index  |    V\n                      |  +-----------+\n                      |  |   Index   |\n                      |  |  \"cache\"  |\n                      |  +-----------+\n                      |    ^\n                      |    |\n                      |    |  diff-files\n                      |    |\n                      V    V\n                    +-----------+\n                    |  Working  |\n                    | Directory |\n                    +-----------+\n\n\nCommit DAG Revision Naming\n==========================\n\nBoth node B and C are a commit parents of commit node A.\nParent commits are ordered left-to-right.\n\n    G   H   I   J\n     \\ /     \\ /\n      D   E   F\n       \\  |  /\n        \\ | /\n         \\|/\n          B     C\n           \\   /\n            \\ /\n             A\n\n    A =      = A^0\n    B = A^   = A^1     = A~1\n    C = A^2  = A^2\n    D = A^^  = A^1^1   = A~2\n    E = B^2  = A^^2\n    F = B^3  = A^^3\n    G = A^^^ = A^1^1^1 = A~3\n    H = D^2  = B^^2    = A^^^2  = A~2^2\n    I = F^   = B^3^    = A^^3^\n    J = F^2  = B^3^2   = A^^3^2\n\nFixed-point operations:\n\n    A^0 = A^{commit}\n    A^{tree}\n   \n"},{"id":"11084","messageId":"7vhdatfp97.fsf@assigned-by-dhcp.cox.net","threadId":"2331","inReplyTo":"E1EXSDW-0005aC-RG@jdl.com","subject":"Re: New ASCII Art","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-11-03T20:30:28Z","receivedAt":"2005-11-03T20:30:28Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"jdl@freescale.com writes:\n\n> So, I have updated drawings for consideration.  See if you buy\n> these.  And if so, let's ponder where they might go.  Then\n> I'll patch 'em in...\n\nThanks for doing this.  You have a sale.\n\n> Fundamental Git Index Operations\n\nREADME (which is included as git(7) Discussion section) might be\na good document to decorate with this.  Probably after \"The\nWorkflow; 5) Tying it all together\".\n\n> Git Merge Operations\n> ====================\n>\n>                     +-----------+\n>                     | Object DB |\n>                     |  Backing  |\n>                     |   Store   | -------+\n>                     +-----------+        |\n>                                          |\n>                            read-tree -m  |\n>   +-----+                  tree obj      |\n>   |patch|                                |\n>   +-----+           +-----------+        |\n>      |              |   Index   | <- - - +\n>      +------------->|  \"cache\"  | - - - >+\n>  git-apply --index  +-----------+        |\n>                                          |\n>                                          |\n>                          read-tree -m -u |\n>  +-----+                        tree obj |\n>  |patch|                                 |\n>  +-----+            +-----------+        |\n>     |               |  Working  |<-------+\n>     +-------------->| Directory |\n>   git-apply         +-----------+\n\nNote that apply --index updates both index and working tree.\nNote that read-tree -m -u takes information from both odb and\nindex, and updates both index and working tree.\n\nLogically this belongs to \"Merging two branches\" in the Tutorial\ndocument.  The Tutorial introduction claims the document intends\nto show how the core level operates to implement higher level\nscripts, but currently we lack the lower-level details in the\ntext that would go well together with this illustration.  Please\nremind me that I should write something up at the very end of\nthat section soonish ;-).\n\n> Git Diff Types\n\nMaybe as a side note to \"Inspecing Changes\" section in the\nTutorial.\n\n> Commit DAG Revision Naming\n\nAs an illustration to \"SPECIFYING REVISIONS\" section of\ngit-rev-parse(1).\n"}]}