Mercurial > public > mercurial-scm > hg
comparison mercurial/streamclone.py @ 50519:58e4842fbfc1
stream-clone: bail-out earlier if stream clone is not requested
The `canperformstreamclone` function is bit messy. However it seems clearer to
me to check if a stream-clone have been requested by the client or the server
at all, before checking if a compatible protocol can be negotiated with the
server.
So I am doing some gratuitous movement so reorder conditional.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sat, 20 May 2023 01:22:49 +0200 |
parents | f697af015683 |
children | a6543983b8f4 |
comparison
equal
deleted
inserted
replaced
50518:f697af015683 | 50519:58e4842fbfc1 |
---|---|
67 isn't supported. | 67 isn't supported. |
68 """ | 68 """ |
69 repo = pullop.repo | 69 repo = pullop.repo |
70 remote = pullop.remote | 70 remote = pullop.remote |
71 | 71 |
72 # should we consider streaming clone at all ? | |
73 streamrequested = pullop.streamclonerequested | |
74 # If we don't have a preference, let the server decide for us. This | |
75 # likely only comes into play in LANs. | |
76 if streamrequested is None: | |
77 # The server can advertise whether to prefer streaming clone. | |
78 streamrequested = remote.capable(b'stream-preferred') | |
79 if not streamrequested: | |
80 return False, None | |
81 | |
72 # Streaming clone only works on an empty destination repository | 82 # Streaming clone only works on an empty destination repository |
73 if len(repo): | 83 if len(repo): |
74 return False, None | 84 return False, None |
75 | 85 |
76 # Streaming clone only works if all data is being requested. | 86 # Streaming clone only works if all data is being requested. |
88 # Ensures legacy code path uses available bundle2. | 98 # Ensures legacy code path uses available bundle2. |
89 if bundle2supported and not bundle2: | 99 if bundle2supported and not bundle2: |
90 return False, None | 100 return False, None |
91 # Ensures bundle2 doesn't try to do a stream clone if it isn't supported. | 101 # Ensures bundle2 doesn't try to do a stream clone if it isn't supported. |
92 elif bundle2 and not bundle2supported: | 102 elif bundle2 and not bundle2supported: |
93 return False, None | |
94 | |
95 streamrequested = pullop.streamclonerequested | |
96 | |
97 # If we don't have a preference, let the server decide for us. This | |
98 # likely only comes into play in LANs. | |
99 if streamrequested is None: | |
100 # The server can advertise whether to prefer streaming clone. | |
101 streamrequested = remote.capable(b'stream-preferred') | |
102 | |
103 if not streamrequested: | |
104 return False, None | 103 return False, None |
105 | 104 |
106 # In order for stream clone to work, the client has to support all the | 105 # In order for stream clone to work, the client has to support all the |
107 # requirements advertised by the server. | 106 # requirements advertised by the server. |
108 # | 107 # |