899
899
def _has_same_fallbacks(self, other_repo):
900
900
"""Returns true if the repositories have the same fallbacks."""
901
901
# XXX: copied from Repository; it should be unified into a base class
902
# <https://bugs.launchpad.net/bzr/+bug/401622>
902
# <https://bugs.edge.launchpad.net/bzr/+bug/401622>
903
903
my_fb = self._fallback_repositories
904
904
other_fb = other_repo._fallback_repositories
905
905
if len(my_fb) != len(other_fb):
1980
1980
if response_tuple[0] != 'ok':
1981
1981
raise errors.UnexpectedSmartServerResponse(response_tuple)
1982
1982
byte_stream = response_handler.read_streamed_body()
1983
src_format, stream = smart_repo._byte_stream_to_stream(byte_stream,
1984
self._record_counter)
1983
src_format, stream = smart_repo._byte_stream_to_stream(byte_stream)
1985
1984
if src_format.network_name() != repo._format.network_name():
1986
1985
raise AssertionError(
1987
1986
"Mismatched RemoteRepository and stream src %r, %r" % (
2789
2788
medium = self._branch._client._medium
2790
2789
if medium._is_remote_before((1, 14)):
2791
2790
return self._vfs_set_option(value, name, section)
2792
if isinstance(value, dict):
2793
if medium._is_remote_before((2, 2)):
2794
return self._vfs_set_option(value, name, section)
2795
return self._set_config_option_dict(value, name, section)
2797
return self._set_config_option(value, name, section)
2799
def _set_config_option(self, value, name, section):
2801
2792
path = self._branch._remote_path()
2802
2793
response = self._branch._client.call('Branch.set_config_option',
2803
2794
path, self._branch._lock_token, self._branch._repo_lock_token,
2804
2795
value.encode('utf8'), name, section or '')
2805
2796
except errors.UnknownSmartMethod:
2806
medium = self._branch._client._medium
2807
2797
medium._remember_remote_is_before((1, 14))
2808
2798
return self._vfs_set_option(value, name, section)
2809
2799
if response != ():
2810
2800
raise errors.UnexpectedSmartServerResponse(response)
2812
def _serialize_option_dict(self, option_dict):
2814
for key, value in option_dict.items():
2815
if isinstance(key, unicode):
2816
key = key.encode('utf8')
2817
if isinstance(value, unicode):
2818
value = value.encode('utf8')
2819
utf8_dict[key] = value
2820
return bencode.bencode(utf8_dict)
2822
def _set_config_option_dict(self, value, name, section):
2824
path = self._branch._remote_path()
2825
serialised_dict = self._serialize_option_dict(value)
2826
response = self._branch._client.call(
2827
'Branch.set_config_option_dict',
2828
path, self._branch._lock_token, self._branch._repo_lock_token,
2829
serialised_dict, name, section or '')
2830
except errors.UnknownSmartMethod:
2831
medium = self._branch._client._medium
2832
medium._remember_remote_is_before((2, 2))
2833
return self._vfs_set_option(value, name, section)
2835
raise errors.UnexpectedSmartServerResponse(response)
2837
2802
def _real_object(self):
2838
2803
self._branch._ensure_real()
2839
2804
return self._branch._real_branch