Actually, I don't really see why that would require a smart server verb.
The way I imagine it to work, it should work plenty fast over sftp.
What is it that makes it so slow?
The way I imagine it to work is that it basically does:
for entry in $(ls $url); do
if [ ! -d $entry -o "." = $entry -o ".." = $entry ]; then
:
elif [ -d $entry/.bzr/branch ]; then
echo $url/$entry
else
recurse on $url/$entry
done
So unless you have a lot of (and/or deep) unrelated directories in that area, I can't imagine what would make it take so long. Admitttedly, a smart server verb would avoid a lot of round-tripping, but all the -d test are independent so they shouldn't need to suffer that much from round-trip delays.
Actually, I don't really see why that would require a smart server verb.
The way I imagine it to work, it should work plenty fast over sftp.
What is it that makes it so slow?
The way I imagine it to work is that it basically does:
for entry in $(ls $url); do
if [ ! -d $entry -o "." = $entry -o ".." = $entry ]; then
:
elif [ -d $entry/.bzr/branch ]; then
echo $url/$entry
else
recurse on $url/$entry
done
So unless you have a lot of (and/or deep) unrelated directories in that area, I can't imagine what would make it take so long. Admitttedly, a smart server verb would avoid a lot of round-tripping, but all the -d test are independent so they shouldn't need to suffer that much from round-trip delays.