~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

  • Committer: Martin Pool
  • Date: 2005-05-11 05:55:27 UTC
  • Revision ID: mbp@sourcefrog.net-20050511055527-d960f4d6989fc47c
- Move show_status() out of Branch into a new function in 
  bzrlib.status
- New option --show-ids for status command
- Refactor TreeDelta.show()
  and add optional support for showing unmodified files
- Changed output format for status command

Show diffs side-by-side

added added

removed removed

Lines of Context:
923
923
 
924
924
 
925
925
 
926
 
    def show_status(self, show_all=False, file_list=None):
927
 
        """Display single-line status for non-ignored working files.
928
 
 
929
 
        The list is show sorted in order by file name.
930
 
 
931
 
        >>> b = ScratchBranch(files=['foo', 'foo~'])
932
 
        >>> b.show_status()
933
 
        ?       foo
934
 
        >>> b.add('foo')
935
 
        >>> b.show_status()
936
 
        A       foo
937
 
        >>> b.commit("add foo")
938
 
        >>> b.show_status()
939
 
        >>> os.unlink(b.abspath('foo'))
940
 
        >>> b.show_status()
941
 
        D       foo
942
 
        """
943
 
        self._need_readlock()
944
 
 
945
 
        # We have to build everything into a list first so that it can
946
 
        # sorted by name, incorporating all the different sources.
947
 
 
948
 
        # FIXME: Rather than getting things in random order and then sorting,
949
 
        # just step through in order.
950
 
 
951
 
        # Interesting case: the old ID for a file has been removed,
952
 
        # but a new file has been created under that name.
953
 
 
954
 
        old = self.basis_tree()
955
 
        new = self.working_tree()
956
 
 
957
 
        items = diff_trees(old, new)
958
 
        # We want to filter out only if any file was provided in the file_list.
959
 
        if isinstance(file_list, list) and len(file_list):
960
 
            items = [item for item in items if item[3] in file_list]
961
 
 
962
 
        for fs, fid, oldname, newname, kind in items:
963
 
            if fs == 'R':
964
 
                show_status(fs, kind,
965
 
                            oldname + ' => ' + newname)
966
 
            elif fs == 'A' or fs == 'M':
967
 
                show_status(fs, kind, newname)
968
 
            elif fs == 'D':
969
 
                show_status(fs, kind, oldname)
970
 
            elif fs == '.':
971
 
                if show_all:
972
 
                    show_status(fs, kind, newname)
973
 
            elif fs == 'I':
974
 
                if show_all:
975
 
                    show_status(fs, kind, newname)
976
 
            elif fs == '?':
977
 
                show_status(fs, kind, newname)
978
 
            else:
979
 
                bailout("weird file state %r" % ((fs, fid),))
980
 
                
981
 
 
982
926
 
983
927
class ScratchBranch(Branch):
984
928
    """Special test class: a branch that cleans up after itself.