Ticket #2822 (new enhancement)

Opened 7 years ago

Last modified 7 years ago

allow panelizing VFS where possible

Reported by: zooloo Owned by:
Priority: major Milestone: Future Releases
Component: mc-vfs Version: master
Keywords: VFS, panelize, fish, FTP Cc:
Blocked By: Blocking:
Branch state: no branch Votes for changeset:

Description

mc should allow panelizing (C-x !) in non-local file systems where the underlying protocol provides some means of recursive listing.

There are cases like FTP or fish where this would be perfectly possible, and it would be very useful. To give an example, with large repositories containing myriads of mostly irrelevant files spread accross subdirectories, panelize would allow to download only files that match certain criteria rather than the entire directory tree.

Change History

comment:1 Changed 7 years ago by zooloo

  • Keywords fish, added

I realize that my suggestion was short-sighted, especially so regarding FTP. I had only 'find' commands in mind, the idea being to simulate 'find' acting on locally cached recursive directory listings. However, other nice panelize commands, e. g. 'grep -rl', would require all files to be fully transferred, so there would not generally be a performance gain. Even though, it would be great to have *some* way to select remote files accross subdirectories. (Think of fetching 20 GiB in order to get hold of a few dozen 1 MiB files.)

Fish, on the other hand, does allow remote shell command execution beyond regular FISH_COMMAND equivalents. Instead of blocking all non-local panelizing attempts, why not leave the decision up to the server, along the lines of

#NOFISH
panelize_command && echo '### 200'

If (a) the server understands panelize_command and returns proper output, then use it, otherwise either (b) make panelize fail or (c) fetch copies and run panelize_command locally on them (the resulting paths then should be translated back to show up as if they were on the server).

The user could choose between (b) and (c) with a checkbox in the panelize dialog or, alternatively, at run time in a warning that pops up when (a) fails.

Note: See TracTickets for help on using tickets.