~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/diff.py

  • Committer: Andrew Bennetts
  • Date: 2010-02-12 04:33:05 UTC
  • mfrom: (5031 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5032.
  • Revision ID: andrew.bennetts@canonical.com-20100212043305-ujdbsdoviql2t7i3
Merge lp:bzr

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
    timestamp,
40
40
    views,
41
41
    )
 
42
 
 
43
from bzrlib.workingtree import WorkingTree
42
44
""")
43
45
 
44
46
from bzrlib.symbol_versioning import (
451
453
 
452
454
def _patch_header_date(tree, file_id, path):
453
455
    """Returns a timestamp suitable for use in a patch header."""
454
 
    mtime = tree.get_file_mtime(file_id, path)
 
456
    try:
 
457
        mtime = tree.get_file_mtime(file_id, path)
 
458
    except errors.FileTimestampUnavailable:
 
459
        mtime = 0
455
460
    return timestamp.format_patch_date(mtime)
456
461
 
457
462
 
722
727
 
723
728
    def _write_file(self, file_id, tree, prefix, relpath, force_temp=False,
724
729
                    allow_write=False):
 
730
        if not force_temp and isinstance(tree, WorkingTree):
 
731
            return tree.abspath(tree.id2path(file_id))
 
732
        
725
733
        full_path = osutils.pathjoin(self._root, prefix, relpath)
726
734
        if not force_temp and self._try_symlink_root(tree, prefix):
727
735
            return full_path
742
750
            source.close()
743
751
        if not allow_write:
744
752
            osutils.make_readonly(full_path)
745
 
        mtime = tree.get_file_mtime(file_id)
 
753
        try:
 
754
            mtime = tree.get_file_mtime(file_id)
 
755
        except errors.FileTimestampUnavailable:
 
756
            mtime = 0
746
757
        os.utime(full_path, (mtime, mtime))
747
758
        return full_path
748
759
 
766
777
    def diff(self, file_id, old_path, new_path, old_kind, new_kind):
767
778
        if (old_kind, new_kind) != ('file', 'file'):
768
779
            return DiffPath.CANNOT_DIFF
769
 
        self._prepare_files(file_id, old_path, new_path)
770
 
        self._execute(osutils.pathjoin('old', old_path),
771
 
                      osutils.pathjoin('new', new_path))
 
780
        (old_disk_path, new_disk_path) = self._prepare_files(
 
781
                                                file_id, old_path, new_path)
 
782
        self._execute(old_disk_path, new_disk_path)
772
783
 
773
784
    def edit_file(self, file_id):
774
785
        """Use this tool to edit a file.