~jelmer/brz-git/extras-badfileenc

« back to all changes in this revision

Viewing changes to branch.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2018-03-08 02:41:04 UTC
  • mfrom: (1823.1.7 no-zero-sha)
  • Revision ID: breezy.the.bot@gmail.com-20180308024104-zfocryfsn779t2bz
Don't use ZERO_SHA in on-disk files to represent empty branch history, as this is not supported by git.

Merged from https://code.launchpad.net/~jelmer/brz-git/no-zero-sha/+merge/341079

Show diffs side-by-side

added added

removed removed

Lines of Context:
564
564
 
565
565
    def _get_head(self):
566
566
        try:
567
 
            return self.repository._git.refs[self.ref or "HEAD"]
 
567
            return self.repository._git.refs[self.ref]
568
568
        except KeyError:
569
569
            return None
570
570
 
583
583
        if not revid or not isinstance(revid, basestring):
584
584
            raise errors.InvalidRevisionId(revision_id=revid, branch=self)
585
585
        if revid == NULL_REVISION:
586
 
            newhead = ZERO_SHA
 
586
            newhead = None
587
587
        else:
588
588
            (newhead, self.mapping) = self.repository.lookup_bzr_revision_id(revid)
589
589
            if self.mapping is None:
591
591
        self._set_head(newhead)
592
592
 
593
593
    def _set_head(self, value):
 
594
        assert value != ZERO_SHA
594
595
        self._head = value
595
 
        self.repository._git.refs[self.ref or "HEAD"] = self._head
 
596
        if value is None:
 
597
            del self.repository._git.refs[self.ref]
 
598
        else:
 
599
            self.repository._git.refs[self.ref] = self._head
596
600
        self._clear_cached_state()
597
601
 
598
602
    head = property(_get_head, _set_head)
734
738
            c = self.source.get_config_stack()
735
739
            fetch_tags = c.get('branch.fetch_tags')
736
740
        def determine_wants(heads):
737
 
            if self.source.ref is not None and not self.source.ref in heads:
738
 
                raise NoSuchRef(self.source.ref, self.source.user_url, heads.keys())
739
 
 
740
741
            if stop_revision is None:
741
 
                if self.source.ref is not None:
 
742
                try:
742
743
                    head = heads[self.source.ref]
 
744
                except KeyError:
 
745
                    self._last_revid = revision.NULL_REVISION
743
746
                else:
744
 
                    head = heads["HEAD"]
745
 
                self._last_revid = self.source.lookup_foreign_revision_id(head)
 
747
                    self._last_revid = self.source.lookup_foreign_revision_id(head)
746
748
            else:
747
749
                self._last_revid = stop_revision
748
750
            real = interrepo.get_determine_wants_revids(
958
960
 
959
961
        if stop_revision is None:
960
962
            refs = interrepo.fetch(branches=["HEAD"], include_tags=fetch_tags)
961
 
            stop_revision = self.target.lookup_foreign_revision_id(refs["HEAD"])
 
963
            try:
 
964
                head = refs["HEAD"]
 
965
            except KeyError:
 
966
                stop_revision = revision.NULL_REVISION
 
967
            else:
 
968
                stop_revision = self.target.lookup_foreign_revision_id(head)
962
969
        else:
963
970
            refs = interrepo.fetch(revision_id=stop_revision, include_tags=fetch_tags)
964
971
        return refs, stop_revision