{"id":367,"date":"2015-06-08T20:39:26","date_gmt":"2015-06-09T00:39:26","guid":{"rendered":"http:\/\/deadpelican.com\/wordpress\/?p=367"},"modified":"2015-06-08T20:39:26","modified_gmt":"2015-06-09T00:39:26","slug":"gotta-get-git","status":"publish","type":"post","link":"https:\/\/deadpelican.com\/wordpress\/?p=367","title":{"rendered":"Gotta Get Git"},"content":{"rendered":"<p>I think I finally get git. I did my first rebase today and I understood what it was doing, and it did what I wanted.<\/p>\n<p>Feeling confident in my understanding of git, and my slight understanding of github, I feel the need to point out a funny little thing I noticed about the brave new world of source control management we all seem to have entered into.<\/p>\n<p>In the good old days, you had version control like cvs or svn.<br \/>\nEverybody checked out, made changes and checked in, if somebody got their changes in before you, you had to merge the updates and commit again. If there was a merge conflict, it was your problem. You had to fix it before you committed.<\/p>\n<p>This spread the responsibility of doing the merging around to everybody and I guess it was unfair in that if you were slower, or committed less often, you had to do more merging. But that&#8217;s how it was, erm&#8230; still is to some people.<\/p>\n<p>In short, you checked out, you did work and you checked in. Everybody played nice, you tried not to break anything and the build ran off HEAD in the repository.<\/p>\n<p>Git is actually very cool, but I think it is overkill. Mercurial I also found out about, is a happy medium, it gives you all the cool parts of git without having gone overboard the way git does, but that&#8217;s just my goldilocks opinion.<\/p>\n<p>Git is the cool source control management system of the decade, and &#8216;github&#8217; is the new way of working.<\/p>\n<p>So this is what I noticed:<\/p>\n<p>svn\/cvs\/perforce\/etc:<br \/>\n1) check out<br \/>\n2) make changes<br \/>\n3) check in.<\/p>\n<p>git + github.<br \/>\n1) fork project<br \/>\n2) clone your copy of the project<br \/>\n3) check out from your local repository to your work directory<br \/>\n4) make changes<br \/>\n5) add changed files to list of things to commit<br \/>\n6) commit changes to your local repository (admittedly this can be done in one step, but it is actually 2 steps)<br \/>\n7) push changes from your local repository to your forked repository on github.<br \/>\n8) open a pull request to the owner\/project manager of the original project you forked, where they will then pull the changes from your forked repository to the main repository.<\/p>\n<p>I think we can safely call this &#8216;progress&#8217;.<\/p>\n<p>I think the oddest thing about this new process, is that svn used to tell you when you tried to commit that you had to update and merge changes first.<br \/>\nThe github way, github will mention that your changes will or won&#8217;t merge cleanly, but that doesn&#8217;t stop you from submitting a pull request.<br \/>\nSo the effort of not accepting your pull request becomes the problem of a human (the owner of the project who got the pull request) whereas it used to be a computer that did it.<br \/>\nI don&#8217;t know github that well, maybe it&#8217;s configurable not to allow pull requests if the merge won&#8217;t be clean, but if not, the making-the-human-part-of-the-process seems to be a step backwards.<\/p>\n<p>I realize that github now gives the project owner the flexibility of not accepting changes they don&#8217;t want, but, I dunno, where I come from, we&#8217;re all supposed to be working on the same team.<\/p>\n<p>Maybe that&#8217;s the core difference between the open source environment and the corporate environment: you can ignore the work of open sourcers, after all, you&#8217;re not paying them anyway.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I think I finally get git. I did my first rebase today and I understood what it was doing, and it did what I wanted. Feeling confident in my understanding of git, and my slight understanding of github, I feel the need to point out a funny little thing I noticed about the brave new [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-367","post","type-post","status-publish","format-standard","hentry","category-notes"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/deadpelican.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/deadpelican.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/deadpelican.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/deadpelican.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/deadpelican.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=367"}],"version-history":[{"count":2,"href":"https:\/\/deadpelican.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/367\/revisions"}],"predecessor-version":[{"id":370,"href":"https:\/\/deadpelican.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/367\/revisions\/370"}],"wp:attachment":[{"href":"https:\/\/deadpelican.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/deadpelican.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/deadpelican.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}