Re: [PATCH] protocol: treat unrecognized protocol.version setting as 0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jonathan Nieder <jrnieder@xxxxxxxxx> writes:

>> I wonder if it's better to specify multiple versions. If v2 is not
>> recognized by this git but v0 is, then it can pick that up. But if you
>> explicitly tell it to choose between v2 and v3 only and it does not
>> understand either, then it dies. Not sure if this is a good idea
>> though.
>
> Interesting thought.  Something roughly like this (on top of the patch
> this is a reply to)?

I am OK with that, i.e. allow the user to tell us what is acceptable
and pick from them, as long as the blind "we do not know so let's
fall back to v0" is removed.



>
> diff --git i/protocol.c w/protocol.c
> index ce9c634a3a..6aa8857a11 100644
> --- i/protocol.c
> +++ w/protocol.c
> @@ -1,4 +1,5 @@
>  #include "cache.h"
> +#include "string-list.h"
>  #include "config.h"
>  #include "protocol.h"
>  
> @@ -14,14 +15,18 @@ static enum protocol_version parse_protocol_version(const char *value)
>  
>  enum protocol_version get_protocol_version_config(void)
>  {
> -	const char *value;
> -	if (!git_config_get_string_const("protocol.version", &value)) {
> -		enum protocol_version version = parse_protocol_version(value);
> -		if (version != protocol_unknown_version)
> -			return version;
> +	const struct string_list *values;
> +	const struct string_list_item *value;
> +	enum protocol_version result = protocol_v0;
> +
> +	values = git_config_get_value_multi("protocol.version");
> +	for_each_string_list_item(value, values) {
> +		enum protocol_version v = parse_protocol_version(value->string);
> +		if (v != protocol_unknown_version)
> +			result = v;
>  	}
>  
> -	return protocol_v0;
> +	return result;
>  }
>  
>  enum protocol_version determine_protocol_version_server(void)



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux