{"id":183,"date":"2007-01-24T22:08:10","date_gmt":"2007-01-24T22:08:10","guid":{"rendered":"http:\/\/localhost:8000\/?p=183"},"modified":"2007-01-24T22:08:10","modified_gmt":"2007-01-24T22:08:10","slug":"a-confluence-of-tools","status":"publish","type":"post","link":"https:\/\/blog.gwadej.org\/programmer-musings\/2007\/01\/a-confluence-of-tools\/","title":{"rendered":"A confluence of tools"},"content":{"rendered":"<p>I don&#8217;t often write about something quite this geeky, but it is just too cool not to share.<\/p>\n<h2 class=\"subhead\">First<\/h2>\n<p>Several months ago, I read about an interesting module for Linux called SSHFS. This module allows you to mount a file system over SSH. This gives a way to access files on another server that you don&#8217;t have any form of shared access such as NFS or Windows shares. All you need is SSH access to the machine that you want to access. It sounded interesting, but I didn&#8217;t really have a need for it.<\/p>\n<h2 class=\"subhead\">Second<\/h2>\n<p>A few months ago, I had been doing a lot of work that involved comparing two source code trees. Depending on various factors, I would move some changes from one of the trees to another. I spend a lot of my time in the <a href=\"http:\/\/www.vim.org\/\">gvim<\/a> editor and I&#8217;ve found the <code>gvimdiff<\/code> mode to be quite helpful for this sort of editing.<\/p>\n<h2 class=\"subhead\">Third<\/h2>\n<p>Unfortunately, <code>gvimdiff<\/code> only compares two files, not two directory trees. I had wrapped some scripting around my <code>gvimdiff<\/code> call to provide some support for the directory merge, but it was awkward and not very pleasant. While looking for something else, I stumbled across the <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=102\">DirDiff<\/a> <code>vim<\/code> script. This did exactly what I wanted. I mapped a couple of function keys to <code>diffget<\/code> and <code>diffput<\/code> to simplify my work. Life was good.<\/p>\n<h2 class=\"subhead\">Stir<\/h2>\n<p>Then one day, I needed to work on some files on another server where I had SSH access. I used SSHFS to mount the other system and found working that way to be quite comfortable. I was looking at files on the two systems and without thinking executed <code>DirDiff<\/code> to compare the differences. After working my way through a few files, it hit me what I was doing. I had files from one machine open in the left window and files from another open in the right window and I was copying bits of code back and forth between the two machines without any real effort.<\/p>\n<p>In some circumstances, (like the one I was in) this is incredibly useful. Much more useful than copying files back and forth or making little changes and uploading files. I wasn&#8217;t completely replicating the files on both servers, so an <code>rsync<\/code> approach would not work.<\/p>\n<p>I know this won&#8217;t be useful (or interesting) to everyone, but it really made my life easier.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I don&#8217;t often write about something quite this geeky, but it is just too cool not to share. First Several months ago, I read about an interesting module for Linux called SSHFS. This module allows you to mount a file system over SSH. This gives a way to access files on another server that you\u2026 <span class=\"read-more\"><a href=\"https:\/\/blog.gwadej.org\/programmer-musings\/2007\/01\/a-confluence-of-tools\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[258,310,340,361],"_links":{"self":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/posts\/183"}],"collection":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/comments?post=183"}],"version-history":[{"count":0,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/posts\/183\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/media?parent=183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/categories?post=183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/tags?post=183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}