~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

  • Committer: Martin Pool
  • Date: 2005-09-01 12:34:34 UTC
  • Revision ID: mbp@sourcefrog.net-20050901123434-47f5353abbeae0d6
- typo fixes from kfish

- point the tutorial to the web site where it's now maintained

Show diffs side-by-side

added added

removed removed

Lines of Context:
62
62
    directory is shown.  Otherwise, only the status of the specified
63
63
    files or directories is reported.  If a directory is given, status
64
64
    is reported for everything inside that directory.
 
65
 
 
66
    If a revision is specified, the changes since that revision are shown.
65
67
    """
66
 
 
67
68
    takes_args = ['file*']
68
 
    takes_options = ['all', 'show-ids']
 
69
    takes_options = ['all', 'show-ids', 'revision']
69
70
    aliases = ['st', 'stat']
70
71
    
71
72
    def run(self, all=False, show_ids=False, file_list=None):
91
92
    takes_args = ['revision_id']
92
93
    
93
94
    def run(self, revision_id):
94
 
        b = find_branch('.')
95
 
        sys.stdout.write(b.get_revision_xml_file(revision_id).read())
 
95
        from bzrlib.xml import pack_xml
 
96
        pack_xml(find_branch('.').get_revision(revision_id), sys.stdout)
96
97
 
97
98
 
98
99
class cmd_revno(Command):
102
103
    def run(self):
103
104
        print find_branch('.').revno()
104
105
 
105
 
 
106
106
class cmd_revision_info(Command):
107
107
    """Show revision number and revision id for a given revision identifier.
108
108
    """
144
144
    Therefore simply saying 'bzr add' will version all files that
145
145
    are currently unknown.
146
146
 
147
 
    Adding a file whose parent directory is not versioned will
148
 
    implicitly add the parent, and so on up to the root. This means
149
 
    you should never need to explictly add a directory, they'll just
150
 
    get added when you add a file in the directory.
 
147
    TODO: Perhaps adding a file whose directly is not versioned should
 
148
    recursively add that parent, rather than giving an error?
151
149
    """
152
150
    takes_args = ['file*']
153
151
    takes_options = ['verbose', 'no-recurse']
305
303
        from bzrlib.branch import pull_loc
306
304
        
307
305
        br_to = find_branch('.')
308
 
        stored_loc = br_to.get_parent()
 
306
        stored_loc = None
 
307
        try:
 
308
            stored_loc = br_to.controlfile("x-pull", "rb").read().rstrip('\n')
 
309
        except IOError, e:
 
310
            if e.errno != errno.ENOENT:
 
311
                raise
309
312
        if location is None:
310
313
            if stored_loc is None:
311
314
                raise BzrCommandError("No pull location known or specified.")
330
333
                
331
334
            merge(('.', -1), ('.', old_revno), check_clean=False)
332
335
            if location != stored_loc:
333
 
                br_to.set_parent(location)
 
336
                br_to.controlfile("x-pull", "wb").write(location + "\n")
334
337
        finally:
335
338
            rmtree(cache_root)
336
339
 
532
535
    examples:
533
536
        bzr diff
534
537
        bzr diff -r1
535
 
        bzr diff -r1..2
 
538
        bzr diff -r1:2
536
539
    """
537
540
    
538
541
    takes_args = ['file*']
1141
1144
class cmd_merge(Command):
1142
1145
    """Perform a three-way merge.
1143
1146
    
1144
 
    The branch is the branch you will merge from.  By default, it will
1145
 
    merge the latest revision.  If you specify a revision, that
1146
 
    revision will be merged.  If you specify two revisions, the first
1147
 
    will be used as a BASE, and the second one as OTHER.  Revision
1148
 
    numbers are always relative to the specified branch.
1149
 
 
1150
 
    By default bzr will try to merge in all new work from the other
1151
 
    branch, automatically determining an appropriate base.  If this
1152
 
    fails, you may need to give an explicit base.
 
1147
    The branch is the branch you will merge from.  By default, it will merge
 
1148
    the latest revision.  If you specify a revision, that revision will be
 
1149
    merged.  If you specify two revisions, the first will be used as a BASE, 
 
1150
    and the second one as OTHER.  Revision numbers are always relative to the
 
1151
    specified branch.
1153
1152
    
1154
1153
    Examples:
1155
1154
 
1177
1176
 
1178
1177
        if revision is None or len(revision) < 1:
1179
1178
            base = [None, None]
1180
 
            other = [branch, -1]
 
1179
            other = (branch, -1)
1181
1180
        else:
1182
1181
            if len(revision) == 1:
1183
 
                other = [branch, revision[0]]
1184
 
                base = [None, None]
 
1182
                other = (branch, revision[0])
 
1183
                base = (None, None)
1185
1184
            else:
1186
1185
                assert len(revision) == 2
1187
1186
                if None in revision:
1188
1187
                    raise BzrCommandError(
1189
1188
                        "Merge doesn't permit that revision specifier.")
1190
 
                base = [branch, revision[0]]
1191
 
                other = [branch, revision[1]]
1192
 
 
1193
 
        try:
1194
 
            merge(other, base, check_clean=(not force), merge_type=merge_type)
1195
 
        except bzrlib.errors.AmbiguousBase, e:
1196
 
            m = ("sorry, bzr can't determine the right merge base yet\n"
1197
 
                 "candidates are:\n  "
1198
 
                 + "\n  ".join(e.bases)
1199
 
                 + "\n"
1200
 
                 "please specify an explicit base with -r,\n"
1201
 
                 "and (if you want) report this to the bzr developers\n")
1202
 
            log_error(m)
 
1189
                base = (branch, revision[0])
 
1190
                other = (branch, revision[1])
 
1191
            
 
1192
        merge(other, base, check_clean=(not force), merge_type=merge_type)
1203
1193
 
1204
1194
 
1205
1195
class cmd_revert(Command):
1295
1285
                    print "Using last location: %s" % parent
1296
1286
                remote = parent
1297
1287
        elif parent is None:
1298
 
            # We only update parent if it did not exist, missing should not change the parent
1299
 
            b.set_parent(remote)
 
1288
            # We only update x-pull if it did not exist, missing should not change the parent
 
1289
            b.controlfile('x-pull', 'wb').write(remote + '\n')
1300
1290
        br_remote = find_branch(remote)
1301
1291
 
1302
1292
        return show_missing(b, br_remote, verbose=verbose, quiet=quiet)