@@ -8,6 +8,12 @@ | |||
| 8 | 8 | __all__ = ["HEAD", "Head"] | |
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | + def strip_quotes(string): | ||
| 12 | + if string.startswith('"') and string.endswith('"'): | ||
| 13 | + return string[1:-1] | ||
| 14 | + return string | ||
| 15 | + | ||
| 16 | + | ||
| 11 | 17 | class HEAD(SymbolicReference): | |
| 12 | 18 | ||
| 13 | 19 | """Special case of a Symbolic Reference as it represents the repository's | |
@@ -152,7 +158,7 @@ def tracking_branch(self): | |||
| 152 | 158 | from .remote import RemoteReference | |
| 153 | 159 | reader = self.config_reader() | |
| 154 | 160 | if reader.has_option(self.k_config_remote) and reader.has_option(self.k_config_remote_ref): | |
| 155 | - ref = Head(self.repo, Head.to_full_path(reader.get_value(self.k_config_remote_ref))) | ||
| 161 | + ref = Head(self.repo, Head.to_full_path(strip_quotes(reader.get_value(self.k_config_remote_ref)))) | ||
| 156 | 162 | remote_refpath = RemoteReference.to_full_path(join_path(reader.get_value(self.k_config_remote), ref.name)) | |
| 157 | 163 | return RemoteReference(self.repo, remote_refpath) | |
| 158 | 164 | # END handle have tracking branch | |
@@ -119,6 +119,18 @@ def test_heads(self, rwrepo): | |||
| 119 | 119 | assert head.tracking_branch() == remote_ref | |
| 120 | 120 | head.set_tracking_branch(None) | |
| 121 | 121 | assert head.tracking_branch() is None | |
| 122 | + | ||
| 123 | + | ||
| 124 | + special_name = 'feature#123' | ||
| 125 | + special_name_remote_ref = SymbolicReference.create(rwrepo, 'refs/remotes/origin/%s' % special_name) | ||
| 126 | + gp_tracking_branch = rwrepo.create_head('gp_tracking#123') | ||
| 127 | + special_name_remote_ref = rwrepo.remotes[0].refs[special_name] # get correct type | ||
| 128 | + gp_tracking_branch.set_tracking_branch(special_name_remote_ref) | ||
| 129 | + assert gp_tracking_branch.tracking_branch().path == special_name_remote_ref.path | ||
| 130 | + | ||
| 131 | + git_tracking_branch = rwrepo.create_head('git_tracking#123') | ||
| 132 | + rwrepo.git.branch('-u', special_name_remote_ref.name, git_tracking_branch.name) | ||
| 133 | + assert git_tracking_branch.tracking_branch().name == special_name_remote_ref.name | ||
| 122 | 134 | # END for each head | |
| 123 | 135 | ||
| 124 | 136 | # verify REFLOG gets altered | |
0 commit comments