/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to dir.py

Fix use with new control dir API.

Show diffs side-by-side

added added

removed removed

Lines of Context:
126
126
    def __init__(self, transport, lockfiles, gitrepo, format):
127
127
        self._format = format
128
128
        self.root_transport = transport
 
129
        self._mode_check_done = False
129
130
        self._git = gitrepo
130
131
        if gitrepo.bare:
131
132
            self.transport = transport
260
261
        repository.
261
262
        """
262
263
        return self.open_repository()
 
264
 
 
265
    def _find_creation_modes(self):
 
266
        """Determine the appropriate modes for files and directories.
 
267
 
 
268
        They're always set to be consistent with the base directory,
 
269
        assuming that this transport allows setting modes.
 
270
        """
 
271
        # TODO: Do we need or want an option (maybe a config setting) to turn
 
272
        # this off or override it for particular locations? -- mbp 20080512
 
273
        if self._mode_check_done:
 
274
            return
 
275
        self._mode_check_done = True
 
276
        try:
 
277
            st = self.transport.stat('.')
 
278
        except TransportNotPossible:
 
279
            self._dir_mode = None
 
280
            self._file_mode = None
 
281
        else:
 
282
            # Check the directory mode, but also make sure the created
 
283
            # directories and files are read-write for this user. This is
 
284
            # mostly a workaround for filesystems which lie about being able to
 
285
            # write to a directory (cygwin & win32)
 
286
            if (st.st_mode & 07777 == 00000):
 
287
                # FTP allows stat but does not return dir/file modes
 
288
                self._dir_mode = None
 
289
                self._file_mode = None
 
290
            else:
 
291
                self._dir_mode = (st.st_mode & 07777) | 00700
 
292
                # Remove the sticky and execute bits for files
 
293
                self._file_mode = self._dir_mode & ~07111
 
294
 
 
295
    def _get_file_mode(self):
 
296
        """Return Unix mode for newly created files, or None.
 
297
        """
 
298
        if not self._mode_check_done:
 
299
            self._find_creation_modes()
 
300
        return self._file_mode
 
301
 
 
302
    def _get_dir_mode(self):
 
303
        """Return Unix mode for newly created directories, or None.
 
304
        """
 
305
        if not self._mode_check_done:
 
306
            self._find_creation_modes()
 
307
        return self._dir_mode
 
308
 
 
309