~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/sftp.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-03-06 06:48:25 UTC
  • mfrom: (4070.8.6 debug-config)
  • Revision ID: pqm@pqm.ubuntu.com-20090306064825-kbpwggw21dygeix6
(mbp) debug_flags configuration option

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Implementation of Transport over SFTP, using paramiko."""
18
18
 
406
406
        """
407
407
        try:
408
408
            self._get_sftp().stat(self._remote_path(relpath))
409
 
            # stat result is about 20 bytes, let's say
410
 
            self._report_activity(20, 'read')
411
409
            return True
412
410
        except IOError:
413
411
            return False
418
416
        :param relpath: The relative path to the file
419
417
        """
420
418
        try:
421
 
            # FIXME: by returning the file directly, we don't pass this
422
 
            # through to report_activity.  We could try wrapping the object
423
 
            # before it's returned.  For readv and get_bytes it's handled in
424
 
            # the higher-level function.
425
 
            # -- mbp 20090126
426
419
            path = self._remote_path(relpath)
427
420
            f = self._get_sftp().file(path, mode='rb')
428
421
            if self._do_prefetch and (getattr(f, 'prefetch', None) is not None):
619
612
 
620
613
    def iter_files_recursive(self):
621
614
        """Walk the relative paths of all files in this transport."""
622
 
        # progress is handled by list_dir
623
615
        queue = list(self.list_dir('.'))
624
616
        while queue:
625
617
            relpath = queue.pop(0)
636
628
        else:
637
629
            local_mode = mode
638
630
        try:
639
 
            self._report_activity(len(abspath), 'write')
640
631
            self._get_sftp().mkdir(abspath, local_mode)
641
 
            self._report_activity(1, 'read')
642
632
            if mode is not None:
643
633
                # chmod a dir through sftp will erase any sgid bit set
644
634
                # on the server side.  So, if the bit mode are already
789
779
        path = self._remote_path(relpath)
790
780
        try:
791
781
            entries = self._get_sftp().listdir(path)
792
 
            self._report_activity(sum(map(len, entries)), 'read')
793
782
        except (IOError, paramiko.SSHException), e:
794
783
            self._translate_io_exception(e, path, ': failed to list_dir')
795
784
        return [urlutils.escape(entry) for entry in entries]