~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

  • Committer: Martin
  • Date: 2010-07-04 07:09:09 UTC
  • mto: This revision was merged to the branch mainline in revision 5333.
  • Revision ID: gzlist@googlemail.com-20100704070909-r51s2leny0wjcqtn
Use same timestamp rounding logic as Inno, just in case

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
        bzrdir,
26
26
        cache_utf8,
27
27
        config as _mod_config,
28
 
        controldir,
29
28
        debug,
30
29
        errors,
31
30
        lockdir,
65
64
BZR_BRANCH_FORMAT_6 = "Bazaar Branch Format 6 (bzr 0.15)\n"
66
65
 
67
66
 
68
 
class Branch(controldir.ControlComponent):
 
67
class Branch(bzrdir.ControlComponent):
69
68
    """Branch holding a history of revisions.
70
69
 
71
70
    :ivar base:
247
246
        if not local and not config.has_explicit_nickname():
248
247
            try:
249
248
                master = self.get_master_branch(possible_transports)
250
 
                if master and self.user_url == master.user_url:
251
 
                    raise errors.RecursiveBind(self.user_url)
252
249
                if master is not None:
253
250
                    # return the master branch value
254
251
                    return master.nick
255
 
            except errors.RecursiveBind, e:
256
 
                raise e
257
252
            except errors.BzrError, e:
258
253
                # Silently fall back to local implicit nick if the master is
259
254
                # unavailable
1522
1517
     * an open routine.
1523
1518
 
1524
1519
    Formats are placed in an dict by their format string for reference
1525
 
    during branch opening. It's not required that these be instances, they
 
1520
    during branch opening. Its not required that these be instances, they
1526
1521
    can be classes themselves with class methods - it simply depends on
1527
1522
    whether state is needed for a given format or not.
1528
1523
 
1819
1814
            "with a bzrlib.branch.PullResult object and only runs in the "
1820
1815
            "bzr client.", (0, 15), None))
1821
1816
        self.create_hook(HookPoint('pre_commit',
1822
 
            "Called after a commit is calculated but before it is "
 
1817
            "Called after a commit is calculated but before it is is "
1823
1818
            "completed. pre_commit is called with (local, master, old_revno, "
1824
1819
            "old_revid, future_revno, future_revid, tree_delta, future_tree"
1825
1820
            "). old_revid is NULL_REVISION for the first commit to a branch, "
1862
1857
            "all are called with the url returned from the previous hook."
1863
1858
            "The order is however undefined.", (1, 9), None))
1864
1859
        self.create_hook(HookPoint('automatic_tag_name',
1865
 
            "Called to determine an automatic tag name for a revision. "
 
1860
            "Called to determine an automatic tag name for a revision."
1866
1861
            "automatic_tag_name is called with (branch, revision_id) and "
1867
1862
            "should return a tag name or None if no tag name could be "
1868
1863
            "determined. The first non-None tag name returned will be used.",
1959
1954
        return self.__dict__ == other.__dict__
1960
1955
 
1961
1956
    def __repr__(self):
1962
 
        return "<%s of %s>" % (self.__class__.__name__, self.branch)
 
1957
        if self.branch:
 
1958
            return "<%s of %s>" % (self.__class__.__name__, self.branch)
 
1959
        else:
 
1960
            return "<%s of format:%s bzrdir:%s>" % (
 
1961
                self.__class__.__name__, self.branch,
 
1962
                self.format, self.bzrdir)
1963
1963
 
1964
1964
 
1965
1965
class SwitchHookParams(object):
3103
3103
    :ivar tag_conflicts: A list of tag conflicts, see BasicTags.merge_to
3104
3104
    """
3105
3105
 
3106
 
    @deprecated_method(deprecated_in((2, 3, 0)))
3107
3106
    def __int__(self):
3108
 
        """Return the relative change in revno.
3109
 
 
3110
 
        :deprecated: Use `new_revno` and `old_revno` instead.
3111
 
        """
 
3107
        # DEPRECATED: pull used to return the change in revno
3112
3108
        return self.new_revno - self.old_revno
3113
3109
 
3114
3110
    def report(self, to_file):
3139
3135
        target, otherwise it will be None.
3140
3136
    """
3141
3137
 
3142
 
    @deprecated_method(deprecated_in((2, 3, 0)))
3143
3138
    def __int__(self):
3144
 
        """Return the relative change in revno.
3145
 
 
3146
 
        :deprecated: Use `new_revno` and `old_revno` instead.
3147
 
        """
 
3139
        # DEPRECATED: push used to return the change in revno
3148
3140
        return self.new_revno - self.old_revno
3149
3141
 
3150
3142
    def report(self, to_file):
3317
3309
        """
3318
3310
        raise NotImplementedError(self.push)
3319
3311
 
3320
 
    @needs_write_lock
3321
 
    def copy_content_into(self, revision_id=None):
3322
 
        """Copy the content of source into target
3323
 
 
3324
 
        revision_id: if not None, the revision history in the new branch will
3325
 
                     be truncated to end with revision_id.
3326
 
        """
3327
 
        raise NotImplementedError(self.copy_content_into)
3328
 
 
3329
3312
 
3330
3313
class GenericInterBranch(InterBranch):
3331
3314
    """InterBranch implementation that uses public Branch functions."""
3480
3463
                # push into the master from the source branch.
3481
3464
                self.source._basic_push(master_branch, overwrite, stop_revision)
3482
3465
                # and push into the target branch from the source. Note that we
3483
 
                # push from the source branch again, because it's considered the
 
3466
                # push from the source branch again, because its considered the
3484
3467
                # highest bandwidth repository.
3485
3468
                result = self.source._basic_push(self.target, overwrite,
3486
3469
                    stop_revision)