~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/add.py

merge up with HEAD and with test-fixes

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
from bzrlib.errors import NotBranchError
19
19
from bzrlib.branch import Branch
20
20
from bzrlib.osutils import quotefn
 
21
from os.path import dirname
21
22
 
22
23
def glob_expand_for_win32(file_list):
23
24
    import glob
78
79
    Returns the number of files added.
79
80
    """
80
81
    import os
81
 
    import sys
82
 
    from bzrlib.osutils import quotefn
83
82
    from bzrlib.errors import BadFileKindError, ForbiddenFileError
84
83
    import bzrlib.branch
85
 
    import bzrlib.osutils
86
84
 
87
85
    assert isinstance(recurse, bool)
88
86
 
129
127
        elif sub_tree:
130
128
            mutter("%r is a bzr tree" %f)
131
129
        else:
132
 
            entry = inv.add_path(rf, kind=kind)
133
 
            mutter("added %r kind %r file_id={%s}" % (rf, kind, entry.file_id))
134
 
            count += 1 
135
 
            reporter(rf, kind, entry)
 
130
            count += __add_one(branch, inv, rf, kind, reporter)
136
131
 
137
132
        if kind == 'directory' and recurse and not sub_tree:
138
133
            for subf in os.listdir(af):
152
147
        branch._write_inventory(inv)
153
148
 
154
149
    return count
 
150
 
 
151
def __add_one(branch, inv, path, kind, reporter):
 
152
    """Add a file or directory, automatically add unversioned parents."""
 
153
 
 
154
    # Nothing to do if path is already versioned.
 
155
    # This is safe from infinite recursion because the branch root is
 
156
    # always versioned.
 
157
    if inv.path2id(path) != None:
 
158
        return 0
 
159
 
 
160
    # add parent
 
161
    count = __add_one(branch, inv, dirname(path), 'directory', reporter)
 
162
 
 
163
    entry = inv.add_path(path, kind=kind)
 
164
    mutter("added %r kind %r file_id={%s}" % (path, kind, entry.file_id))
 
165
    reporter(path, kind, entry)
 
166
 
 
167
    return count + 1