~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/add.py

 * bzr add now lists how many files were ignored per glob.  add --verbose
   lists the specific files.  (Aaron Bentley)

Show diffs side-by-side

added added

removed removed

Lines of Context:
100
100
    file_list = _prepare_file_list(file_list)
101
101
    user_list = file_list[:]
102
102
    inv = tree.read_working_inventory()
103
 
    count = 0
 
103
    added = []
 
104
    ignored = {}
104
105
 
105
106
    for f in file_list:
106
107
        rf = tree.relpath(f)
146
147
        elif sub_tree:
147
148
            mutter("%r is a bzr tree", f)
148
149
        else:
149
 
            count += __add_one(tree, inv, rf, kind, action)
 
150
            added.extend(__add_one(tree, inv, rf, kind, action))
150
151
 
151
152
        if kind == 'directory' and recurse and not sub_tree:
152
153
            for subf in os.listdir(af):
153
154
                subp = os.path.join(rf, subf)
154
155
                if subf == bzrlib.BZRDIR:
155
156
                    mutter("skip control directory %r", subp)
156
 
                elif tree.is_ignored(subp):
157
 
                    mutter("skip ignored sub-file %r", subp)
158
157
                else:
159
 
                    mutter("queue to add sub-file %r", subp)
160
 
                    file_list.append(tree.abspath(subp))
161
 
 
162
 
 
163
 
    mutter('added %d entries', count)
 
158
                    ignore_glob = tree.is_ignored(subp)
 
159
                    if ignore_glob is not None:
 
160
                        mutter("skip ignored sub-file %r", subp)
 
161
                        if ignore_glob not in ignored:
 
162
                            ignored[ignore_glob] = []
 
163
                        ignored[ignore_glob].append(subp)
 
164
                    else:
 
165
                        mutter("queue to add sub-file %r", subp)
 
166
                        file_list.append(tree.abspath(subp))
 
167
 
 
168
 
 
169
    mutter('added %d entries', len(added))
164
170
    
165
 
    if count > 0:
 
171
    if len(added) > 0:
166
172
        tree._write_inventory(inv)
167
173
 
168
 
    return count
 
174
    return added, ignored
169
175
 
170
176
def __add_one(tree, inv, path, kind, action):
171
177
    """Add a file or directory, automatically add unversioned parents."""
174
180
    # This is safe from infinite recursion because the tree root is
175
181
    # always versioned.
176
182
    if inv.path2id(path) != None:
177
 
        return 0
 
183
        return []
178
184
 
179
185
    # add parent
180
 
    count = __add_one(tree, inv, dirname(path), 'directory', action)
 
186
    added = __add_one(tree, inv, dirname(path), 'directory', action)
181
187
    action(inv, path, kind)
182
188
 
183
 
    return count + 1
 
189
    return added + [path]