transport: add a hash algorithm member
When connecting to a remote system, we need to know what hash algorithm it will be using to talk to us. Add a hash_algo member to struct transport and add a function to read this data from the transport object. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
9a9f0d3fc0
commit
7c97af4d64
@ -311,6 +311,7 @@ static struct ref *handshake(struct transport *transport, int for_push,
|
||||
BUG("unknown protocol version");
|
||||
}
|
||||
data->got_remote_heads = 1;
|
||||
transport->hash_algo = reader.hash_algo;
|
||||
|
||||
if (reader.line_peeked)
|
||||
BUG("buffer must be empty at the end of handshake()");
|
||||
@ -996,9 +997,16 @@ struct transport *transport_get(struct remote *remote, const char *url)
|
||||
ret->smart_options->receivepack = remote->receivepack;
|
||||
}
|
||||
|
||||
ret->hash_algo = &hash_algos[GIT_HASH_SHA1];
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
const struct git_hash_algo *transport_get_hash_algo(struct transport *transport)
|
||||
{
|
||||
return transport->hash_algo;
|
||||
}
|
||||
|
||||
int transport_set_option(struct transport *transport,
|
||||
const char *name, const char *value)
|
||||
{
|
||||
|
@ -115,6 +115,8 @@ struct transport {
|
||||
struct git_transport_options *smart_options;
|
||||
|
||||
enum transport_family family;
|
||||
|
||||
const struct git_hash_algo *hash_algo;
|
||||
};
|
||||
|
||||
#define TRANSPORT_PUSH_ALL (1<<0)
|
||||
@ -243,6 +245,12 @@ int transport_push(struct repository *repo,
|
||||
const struct ref *transport_get_remote_refs(struct transport *transport,
|
||||
const struct argv_array *ref_prefixes);
|
||||
|
||||
/*
|
||||
* Fetch the hash algorithm used by a remote.
|
||||
*
|
||||
* This can only be called after fetching the remote refs.
|
||||
*/
|
||||
const struct git_hash_algo *transport_get_hash_algo(struct transport *transport);
|
||||
int transport_fetch_refs(struct transport *transport, struct ref *refs);
|
||||
void transport_unlock_pack(struct transport *transport);
|
||||
int transport_disconnect(struct transport *transport);
|
||||
|
Loading…
Reference in New Issue
Block a user