~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/add.py

  • Committer: Robert Collins
  • Date: 2007-07-02 22:36:11 UTC
  • mto: This revision was merged to the branch mainline in revision 2581.
  • Revision ID: robertc@robertcollins.net-20070702223611-50tnzmbeoryqid75
* New method ``_glob_expand_file_list_if_needed`` on the ``Command`` class
  for dealing with unexpanded glob lists - e.g. on the win32 platform. This
  was moved from ``bzrlib.add._prepare_file_list``. (Robert Collins)

* ``bzrlib.add.smart_add_tree`` will no longer perform glob expansion on
  win32. Callers of the function should do this. (Robert Collins)

* ``bzrlib.add.glob_expand_for_win32`` is now
  ``bzrlib.win32utils.glob_expand``.  (Robert Collins)

* ``bzrlib.smart_add`` is deprecated. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 
24
24
import bzrlib.bzrdir
25
25
import bzrlib.errors as errors
 
26
from bzrlib.errors import NotBranchError
26
27
from bzrlib.inventory import InventoryEntry
 
28
import bzrlib.osutils
 
29
from bzrlib.symbol_versioning import *
27
30
from bzrlib.trace import mutter, note, warning
28
 
from bzrlib.errors import NotBranchError
29
 
import bzrlib.osutils
30
31
from bzrlib.workingtree import WorkingTree
31
32
 
32
33
 
33
 
def glob_expand_for_win32(file_list):
34
 
    """Replacement for glob expansion by the shell.
35
 
 
36
 
    Win32's cmd.exe does not do glob expansion (eg ``*.py``), so we do our own
37
 
    here.
38
 
 
39
 
    :param file_list: A list of filenames which may include shell globs.
40
 
    :return: An expanded list of filenames.
41
 
    """
42
 
    if not file_list:
43
 
        return
44
 
    import glob
45
 
    expanded_file_list = []
46
 
    for possible_glob in file_list:
47
 
        glob_files = glob.glob(possible_glob)
48
 
 
49
 
        if glob_files == []:
50
 
            # special case to let the normal code path handle
51
 
            # files that do not exists
52
 
            expanded_file_list.append(possible_glob)
53
 
        else:
54
 
            expanded_file_list += glob_files
55
 
    return expanded_file_list
56
 
 
57
 
 
58
 
def _prepare_file_list(file_list):
59
 
    """Prepare a file list for use by smart_add_*."""
60
 
    if sys.platform == 'win32':
61
 
        file_list = glob_expand_for_win32(file_list)
62
 
    if not file_list:
63
 
        file_list = [u'.']
64
 
    file_list = list(file_list)
65
 
    return file_list
66
 
 
67
 
 
68
34
class AddAction(object):
69
35
    """A class which defines what action to take when adding a file."""
70
36
 
150
116
add_action_print = add_action_add_and_print
151
117
 
152
118
 
 
119
@deprecated_function(zero_eighteen)
153
120
def smart_add(file_list, recurse=True, action=None, save=True):
154
121
    """Add files to version, optionally recursing into directories.
155
122
 
159
126
    Returns the number of files added.
160
127
    Please see smart_add_tree for more detail.
161
128
    """
162
 
    file_list = _prepare_file_list(file_list)
163
129
    tree = WorkingTree.open_containing(file_list[0])[0]
164
130
    return smart_add_tree(tree, file_list, recurse, action=action, save=save)
165
131
 
218
184
    if action is None:
219
185
        action = AddAction()
220
186
    
221
 
    prepared_list = _prepare_file_list(file_list)
222
 
    mutter("smart add of %r, originally %r", prepared_list, file_list)
 
187
    if not file_list:
 
188
        # no paths supplied: add the entire tree.
 
189
        file_list = [u'.']
 
190
    mutter("smart add of %r")
223
191
    inv = tree.read_working_inventory()
224
192
    added = []
225
193
    ignored = {}
229
197
    # validate user file paths and convert all paths to tree 
230
198
    # relative : its cheaper to make a tree relative path an abspath
231
199
    # than to convert an abspath to tree relative.
232
 
    for filepath in prepared_list:
 
200
    for filepath in file_list:
233
201
        rf = FastPath(tree.relpath(filepath))
234
202
        # validate user parameters. Our recursive code avoids adding new files
235
203
        # that need such validation