{"id":97,"date":"2007-08-13T08:17:52","date_gmt":"2007-08-13T16:17:52","guid":{"rendered":"http:\/\/jaredrobinson.com\/blog\/?p=97"},"modified":"2019-09-17T02:25:40","modified_gmt":"2019-09-17T08:25:40","slug":"git-underwhelms","status":"publish","type":"post","link":"https:\/\/jaredrobinson.com\/blog\/git-underwhelms\/","title":{"rendered":"Git underwhelms"},"content":{"rendered":"<p>I work on source code from two separate <a href=\"http:\/\/svn.tigris.org\">SVN<\/a><br \/>\nrepositories. One of them is geographically remote. Working with the remote server is slow for &#8216;log&#8217;, &#8216;diff -r&#8217;, &#8216;blame&#8217;, etc.  Due to my interest in distributed version control, and my desire for faster repository access, I decided to try git and git-svn. Doing &#8216;log&#8217;, &#8216;diff&#8217;, etc. with a local git repo is much faster, but on the whole, working in a git repo created with git-svn has been difficult and unrewarding. Perhaps it would be easier if others at my company were using git-svn and we could share ideas. Working with git and git-svn requires learning a new workflow, and I haven&#8217;t yet reached enlightenment.<\/p>\n<p>Challenges with Git:<\/p>\n<ul>\n<li>The <a href=\"http:\/\/git.or.cz\/gitwiki\">Git Wiki<\/a> is often out-of-date and\/or incomplete (submodule support, for example).<\/li>\n<li>No Nautilus, Konquerer, or Windows Explorer integration.<\/li>\n<li>No KDevelop itegration.<\/li>\n<li>git-gui should:<\/li>\n<li>let me double-click on files listed in either &#8220;Staged Changes&#8221; or &#8220;Unstaged Changes&#8221; to edit the file. Or let me right-click and choose an &#8220;edit&#8221; option.<\/li>\n<li>Let me use an external diff program such as meld or kdiff3. git-gui should let me set this up and use it. qgit has an external diff option (defaults to kompare), but it doesn&#8217;t  use the working copy on the right hand side, so it&#8217;s not possible to use the diff tool to change the working copy file.<\/li>\n<\/ul>\n<p>Challenges with <a href=\"http:\/\/www.kernel.org\/pub\/software\/scm\/git\/docs\/git-svn.html\">Git-SVN<\/a>: (More complicated to use than Subversion)<\/p>\n<ul>\n<li>Two stage commit instead of single stage. &#8216;git commit&#8217;, &#8216;git-svn dcommit&#8217;<\/li>\n<li>Error messages are cryptic, so I don&#8217;t know how to resolve the errors.<\/li>\n<li>git-svn rebase doesn&#8217;t merge changes from upstream Subversion server into my working copy, and git-svn doesn&#8217;t tell me what workflow I <em>should<\/em> be using. So I ran git-svn fetch to pull upstream Subversion changes. Then I ran git-gui and chose Merge-&gt;Local. It told me something helpful. &#8220;You are in the middle of a change. File X is modified. You should complete the current commit before starting the merge. Doing so will help you abort a failed merge, should the need arise.&#8221; &#8220;git-svn rebase&#8221; should have told me<br \/>\nthe same thing.<\/li>\n<\/ul>\n<p>Reasons to continue with Subversion:<\/p>\n<ul>\n<li>Workflow is easier, less complex &#8212; perhaps because I&#8217;m used to it.<\/li>\n<li>Windows Explorer integration via TortiseSVN.<\/li>\n<li>IDE integration. Nearly every IDE supports or has a pluging for Subversion.<\/li>\n<li>svnmerge.py gives me cherry-picking support (between branches within the same repository)<\/li>\n<li>svnmerge.py remembers merges, so I don&#8217;t have to resolve the same<br \/>\nconflicts twice.<\/li>\n<li>I don&#8217;t need disconnected operation in my workplace.<\/li>\n<\/ul>\n<p>I hope that in a year, Git, git-svn and developer tool integration will be more mature and thus rewarding to use. With the rapid development I see happening, it wouldn&#8217;t be surprising.<\/p>\n<p>I will continue to use <a href=\"http:\/\/www.kernel.org\/pub\/software\/scm\/git\/docs\/git-svn.html\">git-svn<\/a>. It gives me the speed I need for working with log history, annotate and diff.<\/p>\n<p>Update: I&#8217;ve come across <a href=\"http:\/\/eagain.net\/articles\/git-for-computer-scientists\/\">Git for Computer Scientists<\/a>, and seeing the pretty graphs leads me to believe that working with git requires an understanding of how git works.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I work on source code from two separate SVN repositories. One of them is geographically remote. Working with the remote server is slow for &#8216;log&#8217;, &#8216;diff -r&#8217;, &#8216;blame&#8217;, etc. Due to my interest in distributed version control, and my desire for faster repository access, I decided to try git and git-svn. Doing &#8216;log&#8217;, &#8216;diff&#8217;, etc. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/jaredrobinson.com\/blog\/git-underwhelms\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Git underwhelms&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,17,19],"tags":[],"class_list":["post-97","post","type-post","status-publish","format-standard","hentry","category-programming","category-tech","category-work"],"_links":{"self":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/97","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/comments?post=97"}],"version-history":[{"count":2,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/97\/revisions"}],"predecessor-version":[{"id":1435,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/97\/revisions\/1435"}],"wp:attachment":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/media?parent=97"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/categories?post=97"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/tags?post=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}