{"id":141,"date":"2012-07-03T11:44:29","date_gmt":"2012-07-03T09:44:29","guid":{"rendered":"https:\/\/blogs.gentoo.org\/mgorny\/?p=141"},"modified":"2012-07-03T11:49:01","modified_gmt":"2012-07-03T09:49:01","slug":"github-or-how-to-re-centralize-a-dvcs","status":"publish","type":"post","link":"https:\/\/blogs.gentoo.org\/mgorny\/2012\/07\/03\/github-or-how-to-re-centralize-a-dvcs\/","title":{"rendered":"GitHub \u2014 or how to re-centralize a DVCS"},"content":{"rendered":"<p>What are the\u00a0most important advantages of\u00a0git? I\u00a0think one which should come\u00a0out pretty early is\u00a0that it is\u00a0\u00abdistributed\u00bb, or\u00a0\u00abdecentralized\u00bb. This simply means that the\u00a0actual, complete repository moves along with the\u00a0project. At\u00a0some point, you could think: where it is\u00a0hosted shouldn&#8217;t matter that much.<\/p>\n<p>Although git doesn&#8217;t facilitate working completely without centralized server (because you need to\u00a0find updates somewhere), it should be\u00a0pretty clear that the\u00a0repository content should be\u00a0independent of\u00a0the\u00a0hosting service. In\u00a0other words, hosting service should serve the\u00a0repository, not\u00a0enforce its contents.<\/p>\n<p>I\u00a0think all the\u00a0madness started on\u00a0<a rel='external' href='http:\/\/code.google.com\/'>Google Code<\/a> project hosting. There, the\u00a0project wikis were hosted as a\u00a0subdirectory to\u00a0svnroot (e.g. in\u00a0<a rel='external' href='http:\/\/code.google.com\/p\/gecko-mediaplayer\/source\/browse\/'>gecko-mediaplayer sources<\/a>). I&#8217;m not\u00a0sure if\u00a0I\u00a0can say \u00abit is\u00a0wrong\u00bb. On\u00a0one hand, it&#8217;s bad to\u00a0keep completely separate codebases in\u00a0the\u00a0same repository. On\u00a0the\u00a0other, the\u00a0design of\u00a0subversion is\u00a0simply pure madness, and\u00a0so\u00a0everything in\u00a0the\u00a0repository follows it\u2026<\/p>\n<p>On\u00a0the\u00a0other hand, Google got git correctly. When a\u00a0particular project decides to\u00a0use git there, it gets three separate repositories (look at\u00a0<a rel='external' href='http:\/\/code.google.com\/p\/pkgcore\/source\/browse\/'>pkgcore sources<\/a> for an\u00a0example).<\/p>\n<p><a rel='external' href='https:\/\/github.com'>GitHub<\/a> got wikis right as\u00a0well. But\u00a0<a rel='external' href='http:\/\/pages.github.com\/'>GitHub Pages<\/a>\u2026 They actually misuse branches in\u00a0a\u00a0horrible, messy way. Just look how to\u00a0<a rel='external' href='https:\/\/help.github.com\/articles\/creating-project-pages-manually'>create project pages manually<\/a> \u2014 they tell you to\u00a0create an\u00a0\u00aborphan\u00bb branch!<\/p>\n<p>In\u00a0other words, they tell you to\u00a0create two repositories in\u00a0a\u00a0single repository. Two independent histories. Complete madness! And\u00a0whether you want it or\u00a0not, you pull them with every single clone you do. Yes, that could be some kind of\u00a0advantage but\u00a0nevertheless it has <em>nothing<\/em> to do\u00a0with the\u00a0source code.<\/p>\n<p>There&#8217;s also this old, ignored issue that they encourage you to\u00a0rename your <code>README<\/code> file to\u00a0their invented suffix just to\u00a0have it rendered correctly. Once again, hosting services enforces the\u00a0layout of\u00a0your repository. And\u00a0I get really angry getting all those <code>README.md.bz2<\/code> in\u00a0my docdir. This is\u00a0all against the\u00a0purpose of\u00a0markup\u2026<\/p>\n<p>Shortly saying, the\u00a0sole purpose of\u00a0markup formats like Markdown, reStructuredText, asciidoc is\u00a0to provide a\u00a0complete markup on\u00a0top of\u00a0plain text. The\u00a0text which sould be\u00a0still completely usable for\u00a0any regular text viewer. And\u00a0this means that their naming should also follow the\u00a0common text file naming rules, which means either uppercase names in\u00a0*nix or\u00a0<code>.txt<\/code> suffix in\u00a0Windows. No\u00a0custom <code>.md<\/code>, and\u00a0certainly not\u00a0<code>.asciidoc<\/code>!<\/p>\n<p>It&#8217;s really sad that the\u00a0very common git hosting sites, instead of\u00a0encouraging people to\u00a0use git correctly, force them to\u00a0hack it around to\u00a0achieve some minor madness.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What are the\u00a0most important advantages of\u00a0git? I\u00a0think one which should come\u00a0out pretty early is\u00a0that it is\u00a0\u00abdistributed\u00bb, or\u00a0\u00abdecentralized\u00bb. This simply means that the\u00a0actual, complete repository moves along with the\u00a0project. At\u00a0some point, you could think: where it is\u00a0hosted shouldn&#8217;t matter that much. Although git doesn&#8217;t facilitate working completely without centralized server (because you need to\u00a0find updates somewhere), &hellip; <a href=\"https:\/\/blogs.gentoo.org\/mgorny\/2012\/07\/03\/github-or-how-to-re-centralize-a-dvcs\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;GitHub \u2014 or how to re-centralize a DVCS&#8221;<\/span><\/a><\/p>\n","protected":false},"author":137,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[1],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/posts\/141"}],"collection":[{"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/users\/137"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/comments?post=141"}],"version-history":[{"count":6,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/posts\/141\/revisions"}],"predecessor-version":[{"id":147,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/posts\/141\/revisions\/147"}],"wp:attachment":[{"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/media?parent=141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/categories?post=141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/tags?post=141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}