/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

  • Committer: Alexander Belchenko
  • Date: 2011-03-28 08:27:18 UTC
  • mfrom: (5742 +trunk)
  • mto: (5759.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 5760.
  • Revision ID: bialix@ukr.net-20110328082718-wb3emf38d4iffmcp
merge trunk

Show diffs side-by-side

added added

removed removed

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