~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

  • Committer: Martin Pool
  • Date: 2005-07-11 03:27:43 UTC
  • Revision ID: mbp@sourcefrog.net-20050711032743-a3a75b7f82975e7f
- Optionally raise EmptyCommit if there are no changes.  Test for this.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
           committer=None,
25
25
           verbose=True,
26
26
           specific_files=None,
27
 
           rev_id=None):
 
27
           rev_id=None,
 
28
           allow_empty=True):
28
29
    """Commit working copy as a new revision.
29
30
 
30
31
    The basic approach is to add all the file texts into the
41
42
    be robust against files disappearing, moving, etc.  So the
42
43
    whole thing is a bit hard.
43
44
 
 
45
    This raises EmptyCommit if there are no changes, no new merges,
 
46
    and allow_empty is false.
 
47
 
44
48
    timestamp -- if not None, seconds-since-epoch for a
45
49
         postdated/predated commit.
46
50
 
59
63
 
60
64
    from bzrlib.osutils import local_time_offset, username
61
65
    from bzrlib.branch import gen_file_id
62
 
    from bzrlib.errors import BzrError
 
66
    from bzrlib.errors import BzrError, EmptyCommit
63
67
    from bzrlib.revision import Revision, RevisionReference
64
68
    from bzrlib.trace import mutter, note
65
69
    from bzrlib.xml import pack_xml
85
89
 
86
90
        pending_merges = branch.pending_merges()
87
91
 
88
 
        missing_ids, new_inv = _gather_commit(branch,
89
 
                                              work_tree,
90
 
                                              work_inv,
91
 
                                              basis_inv,
92
 
                                              specific_files,
93
 
                                              verbose)
 
92
        missing_ids, new_inv, any_changes = \
 
93
                     _gather_commit(branch,
 
94
                                    work_tree,
 
95
                                    work_inv,
 
96
                                    basis_inv,
 
97
                                    specific_files,
 
98
                                    verbose)
 
99
 
 
100
        if not (any_changes or allow_empty or pending_merges):
 
101
            raise EmptyCommit()
94
102
 
95
103
        for file_id in missing_ids:
96
104
            # Any files that have been deleted are now removed from the
192
200
                   verbose):
193
201
    """Build inventory preparatory to commit.
194
202
 
 
203
    Returns missing_ids, new_inv, any_changes.
 
204
 
195
205
    This adds any changed files into the text store, and sets their
196
206
    test-id, sha and size in the returned inventory appropriately.
197
207
 
209
219
    from revision import Revision
210
220
    from bzrlib.trace import mutter, note
211
221
 
 
222
    any_changes = False
212
223
    inv = Inventory()
213
224
    missing_ids = []
214
225
    
233
244
        if not work_tree.has_id(file_id):
234
245
            if verbose:
235
246
                print('deleted %s%s' % (path, kind_marker(entry.kind)))
 
247
                any_changes = True
236
248
            mutter("    file is missing, removing from inventory")
237
249
            missing_ids.append(file_id)
238
250
            continue
284
296
            marked = path + kind_marker(entry.kind)
285
297
            if not old_ie:
286
298
                print 'added', marked
 
299
                any_changes = True
287
300
            elif old_ie == entry:
288
301
                pass                    # unchanged
289
302
            elif (old_ie.name == entry.name
290
303
                  and old_ie.parent_id == entry.parent_id):
291
304
                print 'modified', marked
 
305
                any_changes = True
292
306
            else:
293
307
                print 'renamed', marked
 
308
                any_changes = True
294
309
                        
295
 
    return missing_ids, inv
 
310
    return missing_ids, inv, any_changes
296
311
 
297
312