/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 bzrlib/export/__init__.py

merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
"""
21
21
 
22
22
import os
23
 
import bzrlib.errors as errors
 
23
import time
 
24
from bzrlib import (
 
25
    errors,
 
26
    pyutils,
 
27
    trace,
 
28
    )
24
29
 
25
30
# Maps format name => export function
26
31
_exporters = {}
54
59
 
55
60
    When requesting a specific type of export, load the respective path.
56
61
    """
57
 
    def _loader(tree, dest, root, subdir, filtered, per_file_timestamps):
58
 
        mod = __import__(module, globals(), locals(), [funcname])
59
 
        func = getattr(mod, funcname)
 
62
    def _loader(tree, dest, root, subdir, filtered, force_mtime):
 
63
        func = pyutils.get_named_object(module, funcname)
60
64
        return func(tree, dest, root, subdir, filtered=filtered,
61
 
                    per_file_timestamps=per_file_timestamps)
 
65
                    force_mtime=force_mtime)
62
66
    register_exporter(scheme, extensions, _loader)
63
67
 
64
68
 
101
105
 
102
106
    if format not in _exporters:
103
107
        raise errors.NoSuchExportFormat(format)
 
108
 
 
109
    if not per_file_timestamps:
 
110
        force_mtime = time.time()
 
111
    else:
 
112
        force_mtime = None
 
113
 
 
114
    trace.mutter('export version %r', tree)
 
115
 
104
116
    tree.lock_read()
105
117
    try:
106
118
        return _exporters[format](tree, dest, root, subdir, filtered=filtered,
107
 
                                  per_file_timestamps=per_file_timestamps)
 
119
                                  force_mtime=force_mtime)
108
120
    finally:
109
121
        tree.unlock()
110
122
 
112
124
def get_root_name(dest):
113
125
    """Get just the root name for an export.
114
126
 
115
 
    >>> get_root_name('../mytest.tar')
116
 
    'mytest'
117
 
    >>> get_root_name('mytar.tar')
118
 
    'mytar'
119
 
    >>> get_root_name('mytar.tar.bz2')
120
 
    'mytar'
121
 
    >>> get_root_name('tar.tar.tar.tgz')
122
 
    'tar.tar.tar'
123
 
    >>> get_root_name('bzr-0.0.5.tar.gz')
124
 
    'bzr-0.0.5'
125
 
    >>> get_root_name('bzr-0.0.5.zip')
126
 
    'bzr-0.0.5'
127
 
    >>> get_root_name('bzr-0.0.5')
128
 
    'bzr-0.0.5'
129
 
    >>> get_root_name('a/long/path/mytar.tgz')
130
 
    'mytar'
131
 
    >>> get_root_name('../parent/../dir/other.tbz2')
132
 
    'other'
133
127
    """
134
128
    global _exporter_extensions
 
129
    if dest == '-':
 
130
        # Exporting to -/foo doesn't make sense so use relative paths.
 
131
        return ''
135
132
    dest = os.path.basename(dest)
136
133
    for ext in _exporter_extensions:
137
134
        if dest.endswith(ext):
139
136
    return dest
140
137
 
141
138
 
142
 
def _export_iter_entries(tree, subdir):
 
139
def _export_iter_entries(tree, subdir, skip_special=True):
143
140
    """Iter the entries for tree suitable for exporting.
144
141
 
145
142
    :param tree: A tree object.
146
143
    :param subdir: None or the path of an entry to start exporting from.
 
144
    :param skip_special: Whether to skip .bzr files.
147
145
    """
148
146
    inv = tree.inventory
149
147
    if subdir is None:
165
163
    for entry in entries:
166
164
        # The .bzr* namespace is reserved for "magic" files like
167
165
        # .bzrignore and .bzrrules - do not export these
168
 
        if entry[0].startswith(".bzr"):
 
166
        if skip_special and entry[0].startswith(".bzr"):
169
167
            continue
170
168
        if subdir is None:
171
169
            if not tree.has_filename(entry[0]):
178
176
 
179
177
register_lazy_exporter(None, [], 'bzrlib.export.dir_exporter', 'dir_exporter')
180
178
register_lazy_exporter('dir', [], 'bzrlib.export.dir_exporter', 'dir_exporter')
181
 
register_lazy_exporter('tar', ['.tar'], 'bzrlib.export.tar_exporter', 'tar_exporter')
 
179
register_lazy_exporter('tar', ['.tar'], 'bzrlib.export.tar_exporter', 'plain_tar_exporter')
182
180
register_lazy_exporter('tgz', ['.tar.gz', '.tgz'], 'bzrlib.export.tar_exporter', 'tgz_exporter')
183
181
register_lazy_exporter('tbz2', ['.tar.bz2', '.tbz2'], 'bzrlib.export.tar_exporter', 'tbz_exporter')
 
182
register_lazy_exporter('tlzma', ['.tar.lzma'], 'bzrlib.export.tar_exporter', 'tar_lzma_exporter')
 
183
register_lazy_exporter('txz', ['.tar.xz'], 'bzrlib.export.tar_exporter', 'tar_xz_exporter')
184
184
register_lazy_exporter('zip', ['.zip'], 'bzrlib.export.zip_exporter', 'zip_exporter')
185
185