{"id":21213,"date":"2018-04-11T14:34:36","date_gmt":"2018-04-11T18:34:36","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=21213"},"modified":"2018-04-15T12:15:53","modified_gmt":"2018-04-15T16:15:53","slug":"why-sqlite-does-not-use-git","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2018\/04\/11\/why-sqlite-does-not-use-git\/","title":{"rendered":"Why SQLite Does Not Use Git"},"content":{"rendered":"<p><a href=\"https:\/\/sqlite.org\/whynotgit.html\">SQLite<\/a> (via <a href=\"https:\/\/news.ycombinator.com\/item?id=16806114\">Hacker News<\/a>):<\/p>\n<blockquote cite=\"https:\/\/sqlite.org\/whynotgit.html\"><p>\nAnd it is not really about just finding the descendents of a check-in\nfrom time to time.  The fact that descendents are readily available in\nFossil means that the information pervades the web pages provided by\nFossil.  One example: Every Fossil check-in information page\n(<a href=\"https:\/\/www.sqlite.org\/src\/info\/ec7addc87f97bcff\">example<\/a>) shows\na small &ldquo;Context&rdquo; graph of the immediate predecessor and successors \nto that check-in.  This helps the user maintain better situational\nawareness, and it provides useful capabilities, such as the ability\nclick forward to the next check-in in sequence.  Another example:\nFossil easily shows the context around a specific check-in\n(<a href=\"https:\/\/www.sqlite.org\/src\/timeline?c=2018-03-16&amp;n=10\">example<\/a>)\nwhich again helps to promote situational awareness and a deeper\nunderstanding of what is happening in the code.<\/p><p>\nAll of the above is possible with Git, given the right extensions\nand tools and using the right commands.  But it is not easy to do,\nand so it rarely gets done.  Consequently, developers have less awareness\nof what is happening in the code.<\/p>\n<p>[&#8230;]<\/p>\n<p>\nGit keeps the complete DAG of the check-in sequence.  But branch\ntags are local information that is not synced and not retained\nonce a branch closes.\nThis makes review of historical\nbranches tedious.\n<\/p><p>\nAs an example, consider display of a single historical\nbranch of SQLite as rendered by GitHub and by Fossil:\n<\/p><ul>\n<li><b>GitHub:<\/b> <a href=\"https:\/\/github.com\/mackyle\/sqlite\/commits\/prefer-coroutine-sort-subquery\">https:\/\/github.com\/mackyle\/sqlite\/commits\/prefer-coroutine-sort-subquery<\/a>\n<\/li><li><b>Fossil:<\/b> <a href=\"https:\/\/sqlite.org\/src\/timeline?r=prefer-coroutine-sort-subquery\">https:\/\/sqlite.org\/src\/timeline?r=prefer-coroutine-sort-subquery<\/a>\n<\/li><\/ul>\n<\/blockquote>\n\n<p>Update (2018-04-15): See also: <a href=\"https:\/\/news.ycombinator.com\/item?id=16838207\">Hacker News<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>SQLite (via Hacker News): And it is not really about just finding the descendents of a check-in from time to time. The fact that descendents are readily available in Fossil means that the information pervades the web pages provided by Fossil. One example: Every Fossil check-in information page (example) shows a small &ldquo;Context&rdquo; graph of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2018-04-11T18:34:38Z","apple_news_api_id":"53e1276b-fb17-46fa-812c-dae3f241b68d","apple_news_api_modified_at":"2018-04-15T16:15:56Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAQ==","apple_news_api_share_url":"https:\/\/apple.news\/AU-Ena_sXRvqBLNrj8kG2jQ","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[],"tags":[1652,377,524,71,425,376],"class_list":["post-21213","post","type-post","status-publish","format-standard","hentry","tag-fossil","tag-git","tag-github","tag-programming","tag-sqlite","tag-versioncontrol"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/21213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=21213"}],"version-history":[{"count":2,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/21213\/revisions"}],"predecessor-version":[{"id":21254,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/21213\/revisions\/21254"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=21213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=21213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=21213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}