~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2004, 2005, 2006 by Canonical Ltd
2
 
 
 
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
7
 
 
 
7
#
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
# GNU General Public License for more details.
12
 
 
 
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
814
814
    def run(self, dir='.'):
815
815
        tree = WorkingTree.open_containing(dir)[0]
816
816
        tree.lock_write()
 
817
        existing_pending_merges = tree.pending_merges()
817
818
        try:
818
819
            last_rev = tree.last_revision() 
819
820
            if last_rev == tree.branch.last_revision():
826
827
            conflicts = tree.update()
827
828
            revno = tree.branch.revision_id_to_revno(tree.last_revision())
828
829
            note('Updated to revision %d.' % (revno,))
 
830
            if tree.pending_merges() != existing_pending_merges:
 
831
                note('Your local commits will now show as pending merges with '
 
832
                     "'bzr status', and can be committed with 'bzr commit'.")
829
833
            if conflicts != 0:
830
834
                return 1
831
835
            else:
876
880
                raise BzrCommandError('Specify one or more files to remove, or'
877
881
                                      ' use --new.')
878
882
        else:
879
 
            from bzrlib.delta import compare_trees
880
 
            added = [compare_trees(tree.basis_tree(), tree,
881
 
                                   specific_files=file_list).added]
882
 
            file_list = sorted([f[0] for f in added[0]], reverse=True)
 
883
            added = tree.changes_from(tree.basis_tree(),
 
884
                specific_files=file_list).added
 
885
            file_list = sorted([f[0] for f in added], reverse=True)
883
886
            if len(file_list) == 0:
884
887
                raise BzrCommandError('No matching files.')
885
888
        tree.remove(file_list, verbose=verbose, to_file=self.outf)
1171
1174
                raise BzrCommandError("Files are in different branches")
1172
1175
            file_list = None
1173
1176
        except NotBranchError:
1174
 
            # Don't raise an error when bzr diff is called from
1175
 
            # outside a working tree.
1176
 
            tree1, tree2 = None, None
 
1177
            if (revision is not None and len(revision) == 2
 
1178
                and not revision[0].needs_branch()
 
1179
                and not revision[1].needs_branch()):
 
1180
                # If both revision specs include a branch, we can
 
1181
                # diff them without needing a local working tree
 
1182
                tree1, tree2 = None, None
 
1183
            else:
 
1184
                raise
1177
1185
        if revision is not None:
1178
1186
            if tree2 is not None:
1179
1187
                raise BzrCommandError("Can't specify -r with two branches")
1227
1235
    hidden = True
1228
1236
    @display_command
1229
1237
    def run(self):
1230
 
        from bzrlib.delta import compare_trees
1231
 
 
1232
1238
        tree = WorkingTree.open_containing(u'.')[0]
1233
 
        td = compare_trees(tree.basis_tree(), tree)
1234
 
 
 
1239
        td = tree.changes_from(tree.basis_tree())
1235
1240
        for path, id, kind, text_modified, meta_modified in td.modified:
1236
1241
            self.outf.write(path + '\n')
1237
1242
 
1754
1759
            raise BzrCommandError("Commit refused because there are unknown "
1755
1760
                                  "files in the working tree.")
1756
1761
        except errors.BoundBranchOutOfDate, e:
1757
 
            raise BzrCommandError(str(e)
1758
 
                                  + ' Either unbind, update, or'
1759
 
                                    ' pass --local to commit.')
1760
 
 
 
1762
            raise BzrCommandError(str(e) + "\n"
 
1763
                'To commit to master branch, run update and then commit.\n'
 
1764
                'You can also pass --local to commit to continue working '
 
1765
                'disconnected.')
1761
1766
 
1762
1767
class cmd_check(Command):
1763
1768
    """Validate consistency of branch history.
1998
2003
 
1999
2004
def show_version():
2000
2005
    import bzrlib
2001
 
    print "bzr (bazaar-ng) %s" % bzrlib.__version__
 
2006
    print "Bazaar (bzr) %s" % bzrlib.__version__
2002
2007
    # is bzrlib itself in a branch?
2003
2008
    branch = _get_bzr_branch()
2004
2009
    if branch: