/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 tools/convertfile.py

  • Committer: Vincent Ladeuil
  • Date: 2009-04-11 16:06:53 UTC
  • mto: (4286.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 4287.
  • Revision ID: v.ladeuil+lp@free.fr-20090411160653-eq1gfn41q3lzhmss
Cleanup test imports and use features to better track skipped tests.

* bzrlib/tests/workingtree_implementations/__init__.py: 
Fix imports. Delete obsolete comment.

* bzrlib/tests/tree_implementations/test_walkdirs.py:
(TestWalkdirs.get_all_subdirs_expected): Reduce duplication.

* bzrlib/tests/tree_implementations/test_test_trees.py: 
Fix import.

* bzrlib/tests/tree_implementations/test_path_content_summary.py: 
Fix imports.

(TestPathContentSummary.test_unicode_symlink_content_summary,
TestPathContentSummary.test_unicode_symlink_target_summary):Use
UnicodeFilenameFeature instead of try/except UnicodeError.

* bzrlib/tests/tree_implementations/test_inv.py: 
Fix imports.
(TestInventoryWithSymlinks): Factor out test that requires
symlinks and use _test_needs_features.
(TestInventory.test_canonical_path,
TestInventory.test_canonical_path_dir,
TestInventory.test_canonical_path_root,
TestInventory.test_canonical_path_invalid_all,
TestInventory.test_canonical_invalid_child): Use assert(expected,
actual)

* bzrlib/tests/tree_implementations/test_get_symlink_target.py: 
Fix imports.
(TestGetSymlinkTarget.test_get_unicode_symlink_target): Use
UnicodeFilenameFeature instead of try/except UnicodeError.

* bzrlib/tests/tree_implementations/__init__.py: 
Fix imports.

(TestCaseWithTree.get_tree_with_subdirs_and_all_supported_content_types,
TestCaseWithTree._create_tree_with_utf8): Use
UnicodeFilenameFeature instead of try/except UnicodeError.

* bzrlib/tests/test_workingtree_4.py:
Fix too long lines.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /usr/bin/python
 
2
 
 
3
# Copyright (C) 2005 Canonical Ltd
 
4
#
 
5
# This program is free software; you can redistribute it and/or modify
 
6
# it under the terms of the GNU General Public License as published by
 
7
# the Free Software Foundation; either version 2 of the License, or
 
8
# (at your option) any later version.
 
9
#
 
10
# This program is distributed in the hope that it will be useful,
 
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
# GNU General Public License for more details.
 
14
#
 
15
# You should have received a copy of the GNU General Public License
 
16
# along with this program; if not, write to the Free Software
 
17
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
18
 
 
19
"""Experiment in converting existing bzr branches to weaves."""
 
20
 
 
21
 
 
22
import sys
 
23
import bzrlib.branch
 
24
from bzrlib.weave import Weave
 
25
from bzrlib.weavefile import write_weave
 
26
 
 
27
import hotshot
 
28
import tempfile
 
29
 
 
30
 
 
31
def convert():
 
32
    WEAVE_NAME = "test.weave"
 
33
 
 
34
    wf = Weave()
 
35
 
 
36
    toconvert = sys.argv[1]
 
37
    
 
38
    b = bzrlib.branch.find_branch(toconvert)
 
39
    rp = b.relpath(toconvert)
 
40
 
 
41
    print 'converting...'
 
42
 
 
43
    fid = b.read_working_inventory().path2id(rp)
 
44
 
 
45
    last_lines = None
 
46
    parents = set()
 
47
    revno = 0
 
48
    for rev_id in b.revision_history():
 
49
        revno += 1
 
50
        print revno
 
51
        tree = b.revision_tree(rev_id)
 
52
        inv = tree.inventory
 
53
 
 
54
        if fid not in tree:
 
55
            print '  (not present)'
 
56
            continue
 
57
 
 
58
        text = tree.get_file(fid).readlines()
 
59
 
 
60
        if text == last_lines:
 
61
            continue
 
62
        last_lines = text
 
63
        
 
64
        weave_id = wf.add(parents, text)
 
65
        parents = [weave_id]
 
66
 
 
67
        print '  %4d lines' % len(text)
 
68
 
 
69
    write_weave(wf, file(WEAVE_NAME, 'wb'))
 
70
 
 
71
 
 
72
prof_f = tempfile.NamedTemporaryFile()
 
73
 
 
74
prof = hotshot.Profile(prof_f.name)
 
75
 
 
76
prof.runcall(convert) 
 
77
prof.close()
 
78
 
 
79
import hotshot.stats
 
80
stats = hotshot.stats.load(prof_f.name)
 
81
#stats.strip_dirs()
 
82
stats.sort_stats('time')
 
83
## XXX: Might like to write to stderr or the trace file instead but
 
84
## print_stats seems hardcoded to stdout
 
85
stats.print_stats(20)
 
86
            
 
87