~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/add.py

  • Committer: Robert Collins
  • Date: 2005-08-25 01:56:02 UTC
  • mto: (974.1.50) (1185.1.10) (1092.3.1)
  • mto: This revision was merged to the branch mainline in revision 1139.
  • Revision ID: robertc@robertcollins.net-20050825015601-b4ac37f043068e82
break smart_add into smart_add and smart_add_branch which will accept a branch parameter

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
            expanded_file_list += glob_files
34
34
    return expanded_file_list
35
35
 
 
36
def _prepare_file_list(file_list):
 
37
    """Prepare a file list for use by smart_add_*."""
 
38
    import sys
 
39
    if sys.platform == 'win32':
 
40
        file_list = glob_expand_for_win32(file_list)
 
41
    if not file_list:
 
42
        file_list = ['.']
 
43
    file_list = list(file_list)
 
44
    assert not isinstance(file_list, basestring)
 
45
    return file_list
 
46
 
36
47
def smart_add(file_list, verbose=True, recurse=True):
37
48
    """Add files to version, optionally recursing into directories.
38
49
 
39
50
    This is designed more towards DWIM for humans than API simplicity.
40
51
    For the specific behaviour see the help for cmd_add().
41
52
    """
 
53
    file_list = _prepare_file_list(file_list)
 
54
    b = Branch(file_list[0], find_root=True)
 
55
    return smart_add_branch(b, file_list, verbose, recurse)
 
56
        
 
57
def smart_add_branch(branch, file_list, verbose=True, recurse=True):
 
58
    """Add files to version, optionally recursing into directories.
 
59
 
 
60
    This is designed more towards DWIM for humans than API simplicity.
 
61
    For the specific behaviour see the help for cmd_add().
 
62
    """
42
63
    import os
43
64
    import sys
44
65
    from bzrlib.osutils import quotefn
46
67
    import bzrlib.branch
47
68
    import bzrlib.osutils
48
69
 
49
 
    if sys.platform == 'win32':
50
 
        file_list = glob_expand_for_win32(file_list)
51
 
        
52
 
    if not file_list:
53
 
        file_list = ['.']
54
 
    
 
70
    file_list = _prepare_file_list(file_list)
55
71
    user_list = file_list[:]
56
 
    file_list = list(file_list)
57
 
    assert not isinstance(file_list, basestring)
58
 
    b = Branch(file_list[0], find_root=True)
59
 
    inv = b.read_working_inventory()
60
 
    tree = b.working_tree()
 
72
    inv = branch.read_working_inventory()
 
73
    tree = branch.working_tree()
61
74
    count = 0
62
75
 
63
76
    for f in file_list:
64
 
        rf = b.relpath(f)
65
 
        af = b.abspath(rf)
 
77
        rf = branch.relpath(f)
 
78
        af = branch.abspath(rf)
66
79
 
67
80
        kind = bzrlib.osutils.file_kind(af)
68
81
 
113
126
                    mutter("skip ignored sub-file %r" % subp)
114
127
                else:
115
128
                    mutter("queue to add sub-file %r" % subp)
116
 
                    file_list.append(b.abspath(subp))
 
129
                    file_list.append(branch.abspath(subp))
117
130
 
118
131
    if count > 0:
119
132
        if verbose:
120
133
            note('added %d' % count)
121
 
        b._write_inventory(inv)
 
134
        branch._write_inventory(inv)
122
135
    else:
123
136
        print "nothing new to add"
124
137
        # should this return 1 to the shell?