~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

  • Committer: Patch Queue Manager
  • Date: 2011-09-08 11:01:15 UTC
  • mfrom: (6123.1.16 gpg-typo)
  • Revision ID: pqm@cupuasso-20110908110115-gbb9benwkdksvzk5
(jelmer) Fix a typo (invalid format identifier) in an error message in
 bzrlib.gpg. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
        ui,
41
41
        urlutils,
42
42
        )
43
 
from bzrlib.i18n import gettext, ngettext
44
43
""")
45
44
 
46
45
from bzrlib import (
215
214
        """
216
215
        return _mod_config.BranchConfig(self)
217
216
 
218
 
    def get_config_stack(self):
219
 
        """Get a bzrlib.config.BranchStack for this Branch.
220
 
 
221
 
        This can then be used to get and set configuration options for the
222
 
        branch.
223
 
 
224
 
        :return: A bzrlib.config.BranchStack.
225
 
        """
226
 
        return _mod_config.BranchStack(self)
227
 
 
228
217
    def _get_config(self):
229
218
        """Get the concrete config for just the config in this branch.
230
219
 
652
641
        """
653
642
        raise errors.UpgradeRequired(self.user_url)
654
643
 
655
 
    def get_append_revisions_only(self):
656
 
        """Whether it is only possible to append revisions to the history.
657
 
        """
658
 
        if not self._format.supports_set_append_revisions_only():
659
 
            return False
660
 
        return self.get_config(
661
 
            ).get_user_option_as_bool('append_revisions_only')
662
 
 
663
644
    def set_append_revisions_only(self, enabled):
664
645
        if not self._format.supports_set_append_revisions_only():
665
646
            raise errors.UpgradeRequired(self.user_url)
733
714
        """
734
715
        return None
735
716
 
736
 
    @deprecated_method(deprecated_in((2, 5, 0)))
737
717
    def get_revision_delta(self, revno):
738
718
        """Return the delta for one revision.
739
719
 
740
720
        The delta is relative to its mainline predecessor, or the
741
721
        empty tree for revision 1.
742
722
        """
743
 
        try:
744
 
            revid = self.get_rev_id(revno)
745
 
        except errors.NoSuchRevision:
 
723
        rh = self.revision_history()
 
724
        if not (1 <= revno <= len(rh)):
746
725
            raise errors.InvalidRevisionNumber(revno)
747
 
        return self.repository.get_revision_delta(revid)
 
726
        return self.repository.get_revision_delta(rh[revno-1])
748
727
 
749
728
    def get_stacked_on_url(self):
750
729
        """Get the URL this branch is stacked against.
861
840
        """
862
841
        pb = ui.ui_factory.nested_progress_bar()
863
842
        try:
864
 
            pb.update(gettext("Unstacking"))
 
843
            pb.update("Unstacking")
865
844
            # The basic approach here is to fetch the tip of the branch,
866
845
            # including all available ghosts, from the existing stacked
867
846
            # repository into a new repository object without the fallbacks. 
1393
1372
        # specific check.
1394
1373
        return result
1395
1374
 
1396
 
    def _get_checkout_format(self, lightweight=False):
 
1375
    def _get_checkout_format(self):
1397
1376
        """Return the most suitable metadir for a checkout of this branch.
1398
1377
        Weaves are used if this branch's repository uses weaves.
1399
1378
        """
1445
1424
        """
1446
1425
        t = transport.get_transport(to_location)
1447
1426
        t.ensure_base()
1448
 
        format = self._get_checkout_format(lightweight=lightweight)
1449
1427
        if lightweight:
 
1428
            format = self._get_checkout_format()
1450
1429
            checkout = format.initialize_on_transport(t)
1451
1430
            from_branch = BranchReferenceFormat().initialize(checkout, 
1452
1431
                target_branch=self)
1453
1432
        else:
 
1433
            format = self._get_checkout_format()
1454
1434
            checkout_branch = bzrdir.BzrDir.create_branch_convenience(
1455
1435
                to_location, force_new_tree=False, format=format)
1456
1436
            checkout = checkout_branch.bzrdir
1588
1568
    object will be created every time regardless.
1589
1569
    """
1590
1570
 
 
1571
    can_set_append_revisions_only = True
 
1572
 
1591
1573
    def __eq__(self, other):
1592
1574
        return self.__class__ is other.__class__
1593
1575
 
1665
1647
        for hook in hooks:
1666
1648
            hook(params)
1667
1649
 
1668
 
    def initialize(self, a_bzrdir, name=None, repository=None,
1669
 
                   append_revisions_only=None):
 
1650
    def initialize(self, a_bzrdir, name=None, repository=None):
1670
1651
        """Create a branch of this format in a_bzrdir.
1671
1652
        
1672
1653
        :param name: Name of the colocated branch to create.
2010
1991
        """What class to instantiate on open calls."""
2011
1992
        raise NotImplementedError(self._branch_class)
2012
1993
 
2013
 
    def _get_initial_config(self, append_revisions_only=None):
2014
 
        if append_revisions_only:
2015
 
            return "append_revisions_only = True\n"
2016
 
        else:
2017
 
            # Avoid writing anything if append_revisions_only is disabled,
2018
 
            # as that is the default.
2019
 
            return ""
2020
 
 
2021
1994
    def _initialize_helper(self, a_bzrdir, utf8_files, name=None,
2022
1995
                           repository=None):
2023
1996
        """Initialize a branch in a bzrdir, with specified files
2113
2086
        """See BranchFormat.get_format_description()."""
2114
2087
        return "Branch format 5"
2115
2088
 
2116
 
    def initialize(self, a_bzrdir, name=None, repository=None,
2117
 
                   append_revisions_only=None):
 
2089
    def initialize(self, a_bzrdir, name=None, repository=None):
2118
2090
        """Create a branch of this format in a_bzrdir."""
2119
 
        if append_revisions_only:
2120
 
            raise errors.UpgradeRequired(a_bzrdir.user_url)
2121
2091
        utf8_files = [('revision-history', ''),
2122
2092
                      ('branch-name', ''),
2123
2093
                      ]
2149
2119
        """See BranchFormat.get_format_description()."""
2150
2120
        return "Branch format 6"
2151
2121
 
2152
 
    def initialize(self, a_bzrdir, name=None, repository=None,
2153
 
                   append_revisions_only=None):
 
2122
    def initialize(self, a_bzrdir, name=None, repository=None):
2154
2123
        """Create a branch of this format in a_bzrdir."""
2155
2124
        utf8_files = [('last-revision', '0 null:\n'),
2156
 
                      ('branch.conf',
2157
 
                          self._get_initial_config(append_revisions_only)),
 
2125
                      ('branch.conf', ''),
2158
2126
                      ('tags', ''),
2159
2127
                      ]
2160
2128
        return self._initialize_helper(a_bzrdir, utf8_files, name, repository)
2181
2149
        """See BranchFormat.get_format_description()."""
2182
2150
        return "Branch format 8"
2183
2151
 
2184
 
    def initialize(self, a_bzrdir, name=None, repository=None,
2185
 
                   append_revisions_only=None):
 
2152
    def initialize(self, a_bzrdir, name=None, repository=None):
2186
2153
        """Create a branch of this format in a_bzrdir."""
2187
2154
        utf8_files = [('last-revision', '0 null:\n'),
2188
 
                      ('branch.conf',
2189
 
                          self._get_initial_config(append_revisions_only)),
 
2155
                      ('branch.conf', ''),
2190
2156
                      ('tags', ''),
2191
2157
                      ('references', '')
2192
2158
                      ]
2214
2180
    This format was introduced in bzr 1.6.
2215
2181
    """
2216
2182
 
2217
 
    def initialize(self, a_bzrdir, name=None, repository=None,
2218
 
                   append_revisions_only=None):
 
2183
    def initialize(self, a_bzrdir, name=None, repository=None):
2219
2184
        """Create a branch of this format in a_bzrdir."""
2220
2185
        utf8_files = [('last-revision', '0 null:\n'),
2221
 
                      ('branch.conf',
2222
 
                          self._get_initial_config(append_revisions_only)),
 
2186
                      ('branch.conf', ''),
2223
2187
                      ('tags', ''),
2224
2188
                      ]
2225
2189
        return self._initialize_helper(a_bzrdir, utf8_files, name, repository)
2278
2242
        location = transport.put_bytes('location', to_branch.base)
2279
2243
 
2280
2244
    def initialize(self, a_bzrdir, name=None, target_branch=None,
2281
 
            repository=None, append_revisions_only=None):
 
2245
            repository=None):
2282
2246
        """Create a branch of this format in a_bzrdir."""
2283
2247
        if target_branch is None:
2284
2248
            # this format does not implement branch itself, thus the implicit
2548
2512
            raise errors.InvalidRevisionId(revision_id=revision_id, branch=self)
2549
2513
        revision_id = _mod_revision.ensure_null(revision_id)
2550
2514
        old_revno, old_revid = self.last_revision_info()
2551
 
        if self.get_append_revisions_only():
 
2515
        if self._get_append_revisions_only():
2552
2516
            self._check_history_violation(revision_id)
2553
2517
        self._run_pre_change_branch_tip_hooks(revno, revision_id)
2554
2518
        self._write_last_revision_info(revno, revision_id)
2993
2957
            raise errors.NotStacked(self)
2994
2958
        return stacked_url
2995
2959
 
 
2960
    def _get_append_revisions_only(self):
 
2961
        return self.get_config(
 
2962
            ).get_user_option_as_bool('append_revisions_only')
 
2963
 
2996
2964
    @needs_read_lock
2997
2965
    def get_rev_id(self, revno, history=None):
2998
2966
        """Find the revision id of the specified revno."""
3147
3115
        tag_updates = getattr(self, "tag_updates", None)
3148
3116
        if not is_quiet():
3149
3117
            if self.old_revid != self.new_revid:
3150
 
                note(gettext('Pushed up to revision %d.') % self.new_revno)
 
3118
                note('Pushed up to revision %d.' % self.new_revno)
3151
3119
            if tag_updates:
3152
 
                note(ngettext('%d tag updated.', '%d tags updated.', len(tag_updates)) % len(tag_updates))
 
3120
                note('%d tag(s) updated.' % len(tag_updates))
3153
3121
            if self.old_revid == self.new_revid and not tag_updates:
3154
3122
                if not tag_conflicts:
3155
 
                    note(gettext('No new revisions or tags to push.'))
 
3123
                    note('No new revisions or tags to push.')
3156
3124
                else:
3157
 
                    note(gettext('No new revisions to push.'))
 
3125
                    note('No new revisions to push.')
3158
3126
        self._show_tag_conficts(to_file)
3159
3127
 
3160
3128
 
3174
3142
        :param verbose: Requests more detailed display of what was checked,
3175
3143
            if any.
3176
3144
        """
3177
 
        note(gettext('checked branch {0} format {1}').format(
3178
 
                                self.branch.user_url, self.branch._format))
 
3145
        note('checked branch %s format %s', self.branch.user_url,
 
3146
            self.branch._format)
3179
3147
        for error in self.errors:
3180
 
            note(gettext('found error:%s'), error)
 
3148
            note('found error:%s', error)
3181
3149
 
3182
3150
 
3183
3151
class Converter5to6(object):