It looks like this can be fixed by copying (parts of) the _put() method from bzrlib
def _put(self, abspath, f, mode=None): """Helper function so both put() and copy_abspaths can reuse the code""" tmp_abspath = '%s.tmp.%.9f.%d.%d' % (abspath, time.time(), os.getpid(), random.randint(0,0x7FFFFFFF)) fout = self._sftp_open_exclusive(tmp_abspath, mode=mode) closed = False try: try: fout.set_pipelined(True) length = self._pump(f, fout) except (IOError, paramiko.SSHException), e: self._translate_io_exception(e, tmp_abspath) # XXX: This doesn't truly help like we would like it to. # The problem is that openssh strips sticky bits. So while we # can properly set group write permission, we lose the group # sticky bit. So it is probably best to stop chmodding, and # just tell users that they need to set the umask correctly. # The attr.st_mode = mode, in _sftp_open_exclusive # will handle when the user wants the final mode to be more # restrictive. And then we avoid a round trip. Unless # paramiko decides to expose an async chmod() # This is designed to chmod() right before we close. # Because we set_pipelined() earlier, theoretically we might # avoid the round trip for fout.close() if mode is not None: self._get_sftp().chmod(tmp_abspath, mode) fout.close() closed = True self._rename_and_overwrite(tmp_abspath, abspath) return length except Exception, e: # If we fail, try to clean up the temporary file # before we throw the exception # but don't let another exception mess things up # Write out the traceback, because otherwise # the catch and throw destroys it import traceback mutter(traceback.format_exc()) try: if not closed: fout.close() self._get_sftp().remove(tmp_abspath) except: # raise the saved except raise e # raise the original with its traceback if we can. raise -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1762572 Title: regression: sftp method no longer uses temporary file name during upload To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/dput/+bug/1762572/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs