<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Alex's Adventures on the Infobahn - dired-rsync</title><link href="https://www.bennee.com/~alex/" rel="alternate"></link><link href="https://www.bennee.com/~alex/blog/tag/dired-rsync/feed" rel="self"></link><id>https://www.bennee.com/~alex/</id><updated>2023-07-14T16:04:00+01:00</updated><subtitle>the wanderings of a supposed digital native</subtitle><entry><title>dired-rsync 0.7 released</title><link href="https://www.bennee.com/~alex/blog/2023/07/14/dired-rsync-07-released/" rel="alternate"></link><published>2023-07-14T16:04:00+01:00</published><updated>2023-07-14T16:04:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2023-07-14:/~alex/blog/2023/07/14/dired-rsync-07-released/</id><summary type="html">&lt;p&gt;There haven't been many changes in the last few years but Liu Hui did
submit a new package that allows you to use dired-rsync with a
&lt;a href="https://www.gnu.org/software/emacs/manual/html_mono/transient.html"&gt;transient&lt;/a&gt;
interface. Aside from that there have been a few minor bug fixes for a
few issues and I spent some time cleaning up …&lt;/p&gt;</summary><content type="html">&lt;p&gt;There haven't been many changes in the last few years but Liu Hui did
submit a new package that allows you to use dired-rsync with a
&lt;a href="https://www.gnu.org/software/emacs/manual/html_mono/transient.html"&gt;transient&lt;/a&gt;
interface. Aside from that there have been a few minor bug fixes for a
few issues and I spent some time cleaning up the bit rotted CI system
by migrating from the broken Travis setup to using GitHub actions.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;v0.7&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;truncate process buffer output to last status line&lt;/li&gt;
&lt;li&gt;raise minimum Emacs version to 25.1&lt;/li&gt;
&lt;li&gt;new dired-rsync-transient frontend&lt;/li&gt;
&lt;li&gt;various code clean-ups&lt;/li&gt;
&lt;li&gt;new customisation hook dired-rsync-success-hook&lt;/li&gt;
&lt;li&gt;moved the project CI to GitHub Actions&lt;/li&gt;
&lt;li&gt;now understands alternate port syntax in tramp URIs&lt;/li&gt;
&lt;/ul&gt;</content><category term="geek"></category><category term="emacs"></category><category term="dired"></category><category term="dired-rsync"></category></entry><entry><title>dired-rsync 0.6 released</title><link href="https://www.bennee.com/~alex/blog/2020/12/24/dired-rsync-06-released/" rel="alternate"></link><published>2020-12-24T22:18:00+00:00</published><updated>2020-12-24T22:18:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2020-12-24:/~alex/blog/2020/12/24/dired-rsync-06-released/</id><summary type="html">&lt;p&gt;Given the slowly growing collection of fixes I thought it was worth cutting a new release for the benefit of those that get their dired-rsync via the stable MELPA channels. The biggest user visible change is dired-rsync no longer tweaks mode-line-process itself. You can now decide if to add dired-rsync-modeline-status …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Given the slowly growing collection of fixes I thought it was worth cutting a new release for the benefit of those that get their dired-rsync via the stable MELPA channels. The biggest user visible change is dired-rsync no longer tweaks mode-line-process itself. You can now decide if to add dired-rsync-modeline-status in your modeline (or anywhere else if you wish).&lt;/p&gt;
&lt;p&gt;Merry Christmas ;-)&lt;/p&gt;
&lt;p&gt;v0.6&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use tramp functions to decompose URIs (fix #22)&lt;/li&gt;
&lt;li&gt;use username from dired URI if we have it in rsync&lt;/li&gt;
&lt;li&gt;fix escaping of 's for remote-to-remote copies&lt;/li&gt;
&lt;li&gt;better detection of running jobs by parsing buffers&lt;/li&gt;
&lt;li&gt;increment the reverse proxy port based on active connections&lt;/li&gt;
&lt;li&gt;don't set mode-line-process, leave it to user to put dired-rsync-modeline-status somewhere&lt;/li&gt;
&lt;/ul&gt;</content><category term="geek"></category><category term="emacs"></category><category term="dired"></category><category term="dired-rsync"></category></entry><entry><title>dired-rsync 0.5 release</title><link href="https://www.bennee.com/~alex/blog/2019/11/10/dired-rsync-0-5-release/" rel="alternate"></link><published>2019-11-10T19:42:00+00:00</published><updated>2019-11-10T19:42:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2019-11-10:/~alex/blog/2019/11/10/dired-rsync-0-5-release/</id><summary type="html">&lt;p&gt;If you've been running from MELPA you will have had all these features already but it was certainly overdue a stable tagging. The commit history shows a lot of faffing around getting the CI working again. However there are a bunch of customisation tweaks exposed as well as support for …&lt;/p&gt;</summary><content type="html">&lt;p&gt;If you've been running from MELPA you will have had all these features already but it was certainly overdue a stable tagging. The commit history shows a lot of faffing around getting the CI working again. However there are a bunch of customisation tweaks exposed as well as support for remote-to-remote rsync support (with a very ugly port-forward hack). From the NEWS file:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Big CI clean-ups (dropped emake, added Cask)&lt;/li&gt;
&lt;li&gt;smarter modeline status (show R:n% when one job running)&lt;/li&gt;
&lt;li&gt;make dired-rsync process dest with expand-file-name&lt;/li&gt;
&lt;li&gt;we now support remote to remote with an ugly port forward hack&lt;/li&gt;
&lt;li&gt;prompt the user for a passphrase if we detect stall in process&lt;/li&gt;
&lt;li&gt;add some basic ert tests&lt;/li&gt;
&lt;li&gt;new customisation option dired-rsync-source-files&lt;/li&gt;
&lt;li&gt;new customisation hook dired-rsync-failed-hook&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy file syncing ;-)&lt;/p&gt;
</content><category term="geek"></category><category term="dired"></category><category term="dired-rsync"></category><category term="emacs"></category></entry><entry><title>dired-rsync 0.4 released</title><link href="https://www.bennee.com/~alex/blog/2018/06/01/dired-rsync-0-4-released/" rel="alternate"></link><published>2018-06-01T18:12:00+01:00</published><updated>2018-06-01T18:12:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2018-06-01:/~alex/blog/2018/06/01/dired-rsync-0-4-released/</id><summary type="html">&lt;p&gt;I started hacking on this a while back but I've finally done the house-keeping tasks required to make it a proper grown up package.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/stsquad/dired-rsync"&gt;dired-rsync&lt;/a&gt; is a simple command which you can use to trigger an rsync copy from within dired. This is especially useful when you want to copy …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I started hacking on this a while back but I've finally done the house-keeping tasks required to make it a proper grown up package.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/stsquad/dired-rsync"&gt;dired-rsync&lt;/a&gt; is a simple command which you can use to trigger an rsync copy from within dired. This is especially useful when you want to copy across large files from a remote server without locking up Emacs/Tramp. The rsync just runs as an inferior process in the background.&lt;/p&gt;
&lt;p&gt;Today was mainly a process of cleaning up the CI and fixing any issues with it. I'd still like to add some proper tests but the whole thing is interactive and that seems to be tricky for Emacs to test. Anyway I've now tagged 0.4 so it will be available from MELPA Stable once it rebuilds. You can of course grab the building edge from MELPA any time ;-)&lt;/p&gt;
</content><category term="geek"></category><category term="dired"></category><category term="elisp"></category><category term="emacs"></category><category term="dired-rsync"></category></entry><entry><title>Working with dired</title><link href="https://www.bennee.com/~alex/blog/2018/04/07/working-with-dired/" rel="alternate"></link><published>2018-04-07T11:12:00+01:00</published><updated>2018-04-07T11:12:00+01:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2018-04-07:/~alex/blog/2018/04/07/working-with-dired/</id><summary type="html">&lt;p&gt;I've been making a lot more use of dired recently. One use case is copying files from my remote server to my home machine. Doing this directly from dired, even with the power of tramp, is a little too time consuming and potentially locks up your session for large files …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've been making a lot more use of dired recently. One use case is copying files from my remote server to my home machine. Doing this directly from dired, even with the power of tramp, is a little too time consuming and potentially locks up your session for large files. While browsing reddit &lt;a class="reference internal" href="#r-emacs"&gt;r/emacs&lt;/a&gt; I found a reference to &lt;cite&gt;this post &amp;lt;https://vxlabs.com/2018/03/30/asynchronous-rsync-with-emacs-dired-and-tramp/&amp;gt;&lt;/cite&gt; that spurred me to look at spawning rsync from dired some more.&lt;/p&gt;
&lt;p&gt;:: &lt;span class="target" id="r-emacs"&gt;r/emacs&lt;/span&gt;: &lt;a class="reference external" href="http://reddit.com/r/emacs"&gt;http://reddit.com/r/emacs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately the solution is currently sitting in a pull-request to what looks like an orphaned package. I also ran into some other problems with the handling of where rsync needs to be run from so rather than unpicking some unfamiliar code I decided to re-implement everything in my &lt;cite&gt;own package &amp;lt;https://github.com/stsquad/dired-rsync&amp;gt;&lt;/cite&gt;.&lt;/p&gt;
&lt;p&gt;I've still got some debugging to do to get it to cleanly handle multiple sessions as well as a more detailed mode-line status. Once I'm happy I'll tag a 0.1 and get it submitted to MELPA.&lt;/p&gt;
&lt;p&gt;While getting more familiar with dired I also came up with this little helper:&lt;/p&gt;
&lt;pre class="code elisp literal-block"&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;my-dired-frame&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Open up a dired frame which closes on exit.&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;interactive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;switch-to-buffer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;dired&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;local-set-key&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;kbd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;C-x C-c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;lambda&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;interactive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;kill-this-buffer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;save-buffers-kill-terminal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;'t&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Which is paired with a simple alias in my shell setup:&lt;/p&gt;
&lt;pre class="code shell literal-block"&gt;
&lt;span class="nb"&gt;alias&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;dired&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;emacsclient -a '' -t -e '(my-dired-frame default-directory)'&amp;quot;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;This works really nicely for popping up a dired frame in your terminal window and cleaning itself up when you exit.&lt;/p&gt;
</content><category term="geek"></category><category term="dired"></category><category term="dired-rsync"></category><category term="emacs"></category></entry></feed>