~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/add.py

  • Committer: Martin Pool
  • Date: 2005-09-05 05:35:25 UTC
  • mfrom: (974.1.55)
  • Revision ID: mbp@sourcefrog.net-20050905053525-2112bac069dbe331
- merge various bug fixes from aaron

aaron.bentley@utoronto.ca-20050905020131-a2d5b7711dd6cd98

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
 
from os.path import dirname
18
 
 
19
 
import bzrlib.errors as errors
20
 
from bzrlib.inventory import InventoryEntry
21
17
from bzrlib.trace import mutter, note, warning
22
18
from bzrlib.errors import NotBranchError
23
19
from bzrlib.branch import Branch
25
21
 
26
22
def glob_expand_for_win32(file_list):
27
23
    import glob
 
24
    
28
25
    expanded_file_list = []
29
26
    for possible_glob in file_list:
30
27
        glob_files = glob.glob(possible_glob)
66
63
    Returns the number of files added.
67
64
    """
68
65
    file_list = _prepare_file_list(file_list)
69
 
    b = Branch.open_containing(file_list[0])
 
66
    b = Branch(file_list[0], find_root=True)
70
67
    return smart_add_branch(b, file_list, recurse, reporter)
71
68
 
72
69
        
81
78
    Returns the number of files added.
82
79
    """
83
80
    import os
 
81
    import sys
 
82
    from bzrlib.osutils import quotefn
84
83
    from bzrlib.errors import BadFileKindError, ForbiddenFileError
85
84
    import bzrlib.branch
 
85
    import bzrlib.osutils
86
86
 
87
87
    assert isinstance(recurse, bool)
88
88
 
98
98
 
99
99
        kind = bzrlib.osutils.file_kind(af)
100
100
 
101
 
        if not InventoryEntry.versionable_kind(kind):
 
101
        if kind != 'file' and kind != 'directory':
102
102
            if f in user_list:
103
103
                raise BadFileKindError("cannot add %s of type %s" % (f, kind))
104
104
            else:
114
114
 
115
115
        if kind == 'directory':
116
116
            try:
117
 
                sub_branch = Branch.open(af)
 
117
                sub_branch = Branch(af, find_root=False)
118
118
                sub_tree = True
119
119
            except NotBranchError:
120
120
                sub_tree = False
121
 
            except errors.UnsupportedFormatError:
122
 
                sub_tree = True
123
121
        else:
124
122
            sub_tree = False
125
123
 
131
129
        elif sub_tree:
132
130
            mutter("%r is a bzr tree" %f)
133
131
        else:
134
 
            count += __add_one(branch, inv, rf, kind, reporter)
 
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)
135
136
 
136
137
        if kind == 'directory' and recurse and not sub_tree:
137
138
            for subf in os.listdir(af):
151
152
        branch._write_inventory(inv)
152
153
 
153
154
    return count
154
 
 
155
 
def __add_one(branch, inv, path, kind, reporter):
156
 
    """Add a file or directory, automatically add unversioned parents."""
157
 
 
158
 
    # Nothing to do if path is already versioned.
159
 
    # This is safe from infinite recursion because the branch root is
160
 
    # always versioned.
161
 
    if inv.path2id(path) != None:
162
 
        return 0
163
 
 
164
 
    # add parent
165
 
    count = __add_one(branch, inv, dirname(path), 'directory', reporter)
166
 
 
167
 
    entry = inv.add_path(path, kind=kind)
168
 
    mutter("added %r kind %r file_id={%s}" % (path, kind, entry.file_id))
169
 
    reporter(path, kind, entry)
170
 
 
171
 
    return count + 1