~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/conflicts.py

  • Committer: Andrew Bennetts
  • Date: 2007-03-28 07:08:42 UTC
  • mfrom: (2380 +trunk)
  • mto: (2018.5.146 hpss)
  • mto: This revision was merged to the branch mainline in revision 2414.
  • Revision ID: andrew.bennetts@canonical.com-20070328070842-r843houy668oxb9o
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
import errno
27
27
 
28
28
from bzrlib import (
 
29
    builtins,
29
30
    commands,
30
31
    errors,
31
32
    osutils,
32
33
    rio,
 
34
    trace,
33
35
    )
34
36
""")
35
37
from bzrlib.option import Option
76
78
    it will mark a conflict.  A conflict means that you need to fix something,
77
79
    before you should commit.
78
80
 
79
 
    Once you have fixed a problem, use "bzr resolve FILE.." to mark
80
 
    individual files as fixed, or "bzr resolve --all" to mark all conflicts as
81
 
    resolved.
 
81
    Once you have fixed a problem, use "bzr resolve" to automatically mark
 
82
    text conflicts as fixed, resolve FILE to mark a specific conflict as
 
83
    resolved, or "bzr resolve --all" to mark all conflicts as resolved.
82
84
 
83
85
    See also bzr conflicts.
84
86
    """
94
96
            tree = WorkingTree.open_containing('.')[0]
95
97
            resolve(tree)
96
98
        else:
 
99
            tree, file_list = builtins.tree_files(file_list)
97
100
            if file_list is None:
98
 
                raise errors.BzrCommandError("command 'resolve' needs one or"
99
 
                                             " more FILE, or --all")
100
 
            tree = WorkingTree.open_containing(file_list[0])[0]
101
 
            to_resolve = [tree.relpath(p) for p in file_list]
102
 
            resolve(tree, to_resolve)
 
101
                un_resolved, resolved = tree.auto_resolve()
 
102
                if len(un_resolved) > 0:
 
103
                    trace.note('%d conflict(s) auto-resolved.', len(resolved))
 
104
                    trace.note('Remaining conflicts:')
 
105
                    for conflict in un_resolved:
 
106
                        trace.note(conflict)
 
107
                    return 1
 
108
                else:
 
109
                    trace.note('All conflicts resolved.')
 
110
                    return 0
 
111
            else:
 
112
                resolve(tree, file_list)
103
113
 
104
114
 
105
115
def resolve(tree, paths=None, ignore_misses=False):
273
283
 
274
284
    def __init__(self, path, file_id=None):
275
285
        self.path = path
276
 
        self.file_id = file_id
 
286
        # warn turned off, because the factory blindly transfers the Stanza
 
287
        # values to __init__ and Stanza is purely a Unicode api.
 
288
        self.file_id = osutils.safe_file_id(file_id, warn=False)
277
289
 
278
290
    def as_stanza(self):
279
291
        s = rio.Stanza(type=self.typestring, path=self.path)
280
292
        if self.file_id is not None:
281
 
            s.add('file_id', self.file_id)
 
293
            # Stanza requires Unicode apis
 
294
            s.add('file_id', self.file_id.decode('utf8'))
282
295
        return s
283
296
 
284
297
    def _cmp_list(self):
392
405
                 conflict_file_id=None):
393
406
        HandledConflict.__init__(self, action, path, file_id)
394
407
        self.conflict_path = conflict_path 
395
 
        self.conflict_file_id = conflict_file_id
 
408
        # warn turned off, because the factory blindly transfers the Stanza
 
409
        # values to __init__.
 
410
        self.conflict_file_id = osutils.safe_file_id(conflict_file_id,
 
411
                                                     warn=False)
396
412
        
397
413
    def _cmp_list(self):
398
414
        return HandledConflict._cmp_list(self) + [self.conflict_path, 
402
418
        s = HandledConflict.as_stanza(self)
403
419
        s.add('conflict_path', self.conflict_path)
404
420
        if self.conflict_file_id is not None:
405
 
            s.add('conflict_file_id', self.conflict_file_id)
 
421
            s.add('conflict_file_id', self.conflict_file_id.decode('utf8'))
406
422
            
407
423
        return s
408
424