~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/lockablefiles.py

Remove the only-used-once put_controlfiles, and change put_controlfile to put and put_utf8.

Show diffs side-by-side

added added

removed removed

Lines of Context:
65
65
        if mode == 'rb': 
66
66
            return self._transport.get(relpath)
67
67
        elif mode == 'wb':
68
 
            raise BzrError("Branch.controlfile(mode='wb') is not supported, use put_controlfiles")
 
68
            raise BzrError("Branch.controlfile(mode='wb') is not supported, use put[_utf8]")
69
69
        elif mode == 'r':
70
70
            # XXX: Do we really want errors='replace'?   Perhaps it should be
71
71
            # an error, or at least reported, if there's incorrectly-encoded
73
73
            # <https://launchpad.net/products/bzr/+bug/3823>
74
74
            return codecs.getreader('utf-8')(self._transport.get(relpath), errors='replace')
75
75
        elif mode == 'w':
76
 
            raise BzrError("Branch.controlfile(mode='w') is not supported, use put_controlfiles")
 
76
            raise BzrError("Branch.controlfile(mode='w') is not supported, use put[_utf8]")
77
77
        else:
78
78
            raise BzrError("invalid controlfile mode %r" % mode)
79
79
 
80
 
    def put_controlfile(self, path, f, encode=True):
81
 
        """Write an entry as a controlfile.
82
 
 
 
80
    def put(self, path, file):
 
81
        """Write a file.
 
82
        
83
83
        :param path: The path to put the file, relative to the .bzr control
84
84
                     directory
85
85
        :param f: A file-like or string object whose contents should be copied.
86
 
        :param encode:  If true, encode the contents as utf-8
87
86
        """
88
 
        self.put_controlfiles([(path, f)], encode=encode)
89
 
 
90
 
    def put_controlfiles(self, files, encode=True):
91
 
        """Write several entries as controlfiles.
92
 
 
93
 
        :param files: A list of [(path, file)] pairs, where the path is the directory
94
 
                      underneath the bzr control directory
95
 
        :param encode:  If true, encode the contents as utf-8
 
87
        self._transport.put(self._rel_controlfilename(path), file)
 
88
 
 
89
    def put_utf8(self, path, file):
 
90
        """Write a file, encoding as utf-8.
 
91
 
 
92
        :param path: The path to put the file, relative to the .bzr control
 
93
                     directory
 
94
        :param f: A file-like or string object whose contents should be copied.
96
95
        """
97
96
        import codecs
98
97
        ctrl_files = []
99
 
        for path, f in files:
100
 
            if encode:
101
 
                if isinstance(f, basestring):
102
 
                    f = f.encode('utf-8', 'replace')
103
 
                else:
104
 
                    f = codecs.getwriter('utf-8')(f, errors='replace')
105
 
            path = self._rel_controlfilename(path)
106
 
            ctrl_files.append((path, f))
107
 
        self._transport.put_multi(ctrl_files)
 
98
        if isinstance(file, basestring):
 
99
            file = file.encode('utf-8', 'replace')
 
100
        else:
 
101
            file = codecs.getwriter('utf-8')(file, errors='replace')
 
102
        self.put(path, file)
108
103
 
109
104
    def lock_write(self):
110
105
        mutter("lock write: %s (%s)", self, self._lock_count)