~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/merge.py

[merge] jam-integration 1495

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
 
18
18
import os
19
 
import tempfile
20
19
import shutil
21
20
import errno
22
21
 
39
38
from bzrlib.trace import mutter, warning, note
40
39
from bzrlib.fetch import greedy_fetch, fetch
41
40
from bzrlib.revision import is_ancestor, NULL_REVISION
42
 
from bzrlib.osutils import rename
 
41
from bzrlib.osutils import rename, pathjoin
43
42
from bzrlib.revision import common_ancestor, MultipleRevisionSources
44
43
from bzrlib.errors import NoSuchRevision
45
44
 
172
171
        return "skip"
173
172
 
174
173
    def rem_contents_conflict(self, filename, this_contents, base_contents):
175
 
        base_contents(filename+".BASE", self, False)
176
 
        this_contents(filename+".THIS", self, False)
177
 
        return ReplaceContents(this_contents, None)
178
 
 
179
 
    def rem_contents_conflict(self, filename, this_contents, base_contents):
180
 
        base_contents(filename+".BASE", self, False)
181
 
        this_contents(filename+".THIS", self, False)
 
174
        base_contents(filename+".BASE", self)
 
175
        this_contents(filename+".THIS", self)
182
176
        self.conflict("Other branch deleted locally modified file %s" %
183
177
                      filename)
184
178
        return ReplaceContents(this_contents, None)
202
196
            abspath = self.create_all_missing(entry.parent_id, tree)
203
197
        else:
204
198
            abspath = self.abs_this_path(entry.parent_id)
205
 
        entry_path = os.path.join(abspath, entry.name)
 
199
        entry_path = pathjoin(abspath, entry.name)
206
200
        if not os.path.isdir(entry_path):
207
201
            self.create(file_id, entry_path, tree)
208
202
        return entry_path
209
203
 
210
 
    def create(self, file_id, path, tree, reverse=False):
 
204
    def create(self, file_id, path, tree):
211
205
        """Uses tree data to create a filesystem object for the file_id"""
212
206
        from changeset import get_contents
213
 
        get_contents(tree, file_id)(path, self, reverse)
 
207
        get_contents(tree, file_id)(path, self)
214
208
 
215
209
    def missing_for_merge(self, file_id, other_path):
216
210
        """The file_id doesn't exist in THIS, but does in OTHER and BASE"""
217
211
        self.conflict("Other branch modified locally deleted file %s" %
218
212
                      other_path)
219
213
        parent_dir = self.add_missing_parents(file_id, self.other_tree)
220
 
        stem = os.path.join(parent_dir, os.path.basename(other_path))
 
214
        stem = pathjoin(parent_dir, os.path.basename(other_path))
221
215
        self.create(file_id, stem+".OTHER", self.other_tree)
222
216
        self.create(file_id, stem+".BASE", self.base_tree)
223
217
 
586
580
            entry = old_entries[file_id]
587
581
            if entry.parent_id is None:
588
582
                return entry.name
589
 
            return os.path.join(id2path(entry.parent_id), entry.name)
 
583
            return pathjoin(id2path(entry.parent_id), entry.name)
590
584
            
591
585
        for file_id in old_entries:
592
586
            entry = old_entries[file_id]
613
607
                parent = None
614
608
            else:
615
609
                parent = by_path[os.path.dirname(path)]
616
 
            abspath = os.path.join(self.this_tree.basedir, path)
 
610
            abspath = pathjoin(self.this_tree.basedir, path)
617
611
            kind = bzrlib.osutils.file_kind(abspath)
618
612
            new_inventory[file_id] = (path, file_id, parent, kind)
619
613
            by_path[path] = file_id