~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to baz2bzr

  • Committer: Aaron Bentley
  • Date: 2005-05-26 14:20:29 UTC
  • Revision ID: abentley@troll-20050526142029-e919772712205486
Added bug report

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
import os.path
30
30
import shutil
31
31
import bzrlib
 
32
import bzrlib.trace
32
33
import sys
 
34
import email.Utils
33
35
from progress import *
34
36
 
35
37
def add_id(files, id=None):
163
165
    'test@example.com/test--test--0--patch-1'
164
166
    >>> teardown_environ(q)
165
167
    """
166
 
    revision = version.iter_revisions().next()
 
168
    revision = version.iter_revisions(reverse=True).next()
167
169
    ancestors = list(revision.iter_ancestors(metoo=True))
168
170
    ancestors.reverse()
169
171
    return ancestors
170
172
 
171
173
 
172
 
def import_version(output_dir, version):
 
174
def import_version(output_dir, version, fancy=True):
173
175
    """
174
176
    >>> q = test_environ()
175
177
    >>> result_path = os.path.join(q, "result")
176
178
    >>> commit_test_revisions()
177
179
    >>> version = pybaz.Version("test@example.com/test--test--0")
178
 
    >>> import_version(result_path, version)
179
 
    Importing 3 revisions
180
 
    ...
 
180
    >>> import_version(result_path, version, fancy=False)
 
181
    not fancy
 
182
    ....
 
183
    Import complete.
181
184
    >>> teardown_environ(q)
182
185
    """
 
186
    progress_bar = ProgressBar()
183
187
    tempdir = tempfile.mkdtemp(prefix="baz2bzr")
184
188
    try:
 
189
        if not fancy:
 
190
            print "not fancy"
185
191
        for result in iter_import_version(output_dir, version, tempdir):
186
 
            progress_bar(result)
 
192
            if fancy:
 
193
                progress_bar(result)
 
194
            else:
 
195
                sys.stdout.write('.')
187
196
    finally:
188
 
        clear_progress_bar()
 
197
        if fancy:
 
198
            clear_progress_bar()
 
199
        else:
 
200
            sys.stdout.write('\n')
189
201
        shutil.rmtree(tempdir)
190
202
    print "Import complete."
191
203
            
197
209
        """
198
210
        Exception.__init__(self, message)
199
211
 
 
212
def revision_id(arch_revision):
 
213
    """
 
214
    Generate a Bzr revision id from an Arch revision id.  'x' in the id
 
215
    designates a revision imported with an experimental algorithm.  A number
 
216
    would indicate a particular standardized version.
 
217
 
 
218
    :param arch_revision: The Arch revision to generate an ID for.
 
219
 
 
220
    >>> revision_id(pybaz.Revision("you@example.com/cat--br--0--base-0"))
 
221
    'Arch-x:you@example.com%cat--br--0--base-0'
 
222
    """
 
223
    return "Arch-x:%s" % str(arch_revision).replace('/', '%')
 
224
 
200
225
def iter_import_version(output_dir, version, tempdir):
201
226
    revdir = None
202
227
    ancestors = version_ancestry(version)
215
240
            os.rename(new, old)
216
241
            branch = bzrlib.Branch(revdir)
217
242
        branch.set_inventory(baz_inv)
218
 
        branch.commit(log.summary)
 
243
        timestamp = email.Utils.mktime_tz(log.date + (0,))
 
244
        rev_id = revision_id(revision)
 
245
        bzrlib.trace.silent = True
 
246
        try:
 
247
            branch.commit(log.summary, verbose=False, committer=log.creator,
 
248
                          timestamp=timestamp, timezone=0, rev_id=rev_id)
 
249
        finally:
 
250
            bzrlib.trace.silent = False   
219
251
    yield Progress("revisions", len(ancestors), len(ancestors))
220
252
    unlink_unversioned(branch, revdir)
221
253
    os.rename(revdir, output_dir)   
228
260
        else:
229
261
            os.unlink(path)
230
262
 
 
263
def get_log(tree, revision):
 
264
    log = tree.iter_logs(version=revision.version, reverse=True).next()
 
265
    assert log.revision == revision
 
266
    return log
 
267
 
231
268
def get_revision(revdir, revision):
232
269
    revision.get(revdir)
233
270
    tree = pybaz.tree_root(revdir)
234
 
    log = tree.iter_logs(reverse=True).next()
 
271
    log = get_log(tree, revision)
235
272
    try:
236
273
        return bzr_inventory_data(tree), log 
237
274
    except BadFileKind, e:
241
278
def apply_revision(revdir, revision):
242
279
    tree = pybaz.tree_root(revdir)
243
280
    revision.apply(tree)
244
 
    log = tree.iter_logs(reverse=True).next()
 
281
    log = get_log(tree, revision)
245
282
    try:
246
283
        return bzr_inventory_data(tree), log
247
284
    except BadFileKind, e:
292
329
        import_version(output_dir, pybaz.Version(sys.argv[1]))
293
330
    except UserError, e:
294
331
        print e
 
332
    except KeyboardInterrupt:
 
333
        print "Aborted."
295
334
else:
296
335
    print "usage: %s VERSION OUTDIR" % os.path.basename(sys.argv[0])