Aug 092011
 

Filezilla is a great ftp/sftp/… tool. But it is missing one feature that would make it more useful: a file diff ability. This allows you to see the remote file, and local file side by side to see what is different between them. This is an often requested feature in the Filezilla forums, and until it is implemented officially, you can use this workaround to get diffs in Filezilla.

This was done running Filezilla 3.3.1 on Ubuntu 10.04.

  1. First, install Meld (haven’t tried it with any other diff viewer yet)
  2. Then go to Edit -> Settings -> File editing
  3. Change to ‘Use custom editor:’ and enter: /usr/bin/meld /home/{yourusername}/filezillafake.txt
  4. Click OK.
  5. Create a file in your home directory called filezillafake.txt
  6. You may need to also select “Always use default editor”. Optionally, you can go one menu below to “Filetype associations” and add the command for any file types that you want so it isn’t available for all.

Now, when you View/Edit a file, it will open in meld with your fake file on the left, and the remote file on the right. Then drag the file from your filezilla window into the ‘Browse’ area for the fake file in the Meld Window. It will load up and show you the diff.

You should be able to edit the file here and save it and Filezilla should prompt for an upload.

This works because Meld supports drag and drop, and also inserting two file names at the command prompt. Any application for any platform that does that should be supported by this method. The only downside is that Meld is now your default editor for files, and you may not like that if you do a lot of remote editing.

  2 Responses to “Diff in Filezilla”

  1. Thanks cornmaster, that’s one *very* useful tip. since switching from KDE to XFCE i’ve been struggling to diff remote files without explicitly downloading first.

  2. Super tip!

    You can also hack this slighty.

    In custom editor instead of the filezillafake.txt argument provide a root directory for file searches

    /home//meldboth.sh

    where meldboth.sh looks like this (it takes the file name and tries to find the corresponding local file from the . (Could of course be improved with error checking)

    #!/usr/bin/env bash
    localbase=$1
    remotefile=$2
    file=$(basename $remotefile)
    localfile=$(find $localbase -name $file)
    /usr/bin/meld $localfile $remotefile&

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)