Merge lp:~jelmer/brz/symrefloop into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: 7619
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz/symrefloop
Merge into: lp:brz
Diff against target: 36 lines (+10/-2)
1 file modified
breezy/git/remote.py (+10/-2)
To merge this branch: bzr merge lp:~jelmer/brz/symrefloop
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Review via email: mp+429029@code.launchpad.net

Commit message

Handle remove symref loops.

Description of the change

Handle remove symref loops.

To post a comment you must log in.
Revision history for this message
Jelmer Vernooij (jelmer) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/git/remote.py'
2--- breezy/git/remote.py 2022-08-28 18:54:11 +0000
3+++ breezy/git/remote.py 2022-08-28 19:47:28 +0000
4@@ -19,6 +19,11 @@
5 import gzip
6 import re
7
8+try:
9+ from dulwich.refs import SymrefLoop
10+except ImportError:
11+ SymrefLoop = KeyError
12+
13 from .. import (
14 config,
15 debug,
16@@ -577,7 +582,7 @@
17 return RemoteGitRepository(self)
18
19 def get_branch_reference(self, name=None):
20- ref = branch_name_to_ref(name)
21+ ref = self._get_selected_ref(name)
22 val = self.get_refs_container().read_ref(ref)
23 if val.startswith(SYMREF):
24 return val[len(SYMREF):]
25@@ -595,7 +600,10 @@
26 except NotGitRepository:
27 raise NotBranchError(self.root_transport.base,
28 controldir=self)
29- ref_chain, unused_sha = self.get_refs_container().follow(ref)
30+ try:
31+ ref_chain, unused_sha = self.get_refs_container().follow(ref)
32+ except SymrefLoop:
33+ raise BranchReferenceLoop(self)
34 return RemoteGitBranch(self, repo, ref_chain[-1])
35
36 def open_workingtree(self, recommend_upgrade=False):

Subscribers

People subscribed via source and target branches