Teach Git how to parse standard power of 2 suffixes.
Sometimes its necessary to supply a value as a power of two in a configuration parameter. In this case the user may want to use the standard suffixes such as K, M, or G to indicate that the numerical value should be multiplied by a constant base before being used. Shell scripts/etc. can also benefit from this automatic option parsing with `git repo-config --int`. [jc: with a couple of test and a slight input tightening] Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
							parent
							
								
									95d3c4f546
								
							
						
					
					
						commit
						d77a64d353
					
				|  | @ -87,7 +87,10 @@ OPTIONS | ||||||
| 	git-repo-config will ensure that the output is "true" or "false" | 	git-repo-config will ensure that the output is "true" or "false" | ||||||
|  |  | ||||||
| --int:: | --int:: | ||||||
| 	git-repo-config will ensure that the output is a simple decimal number | 	git-repo-config will ensure that the output is a simple | ||||||
|  | 	decimal number.  An optional value suffix of 'k', 'm', or 'g' | ||||||
|  | 	in the config file will cause the value to be multiplied | ||||||
|  | 	by 1024, 1048576, or 1073741824 prior to output. | ||||||
|  |  | ||||||
|  |  | ||||||
| ENVIRONMENT | ENVIRONMENT | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								config.c
								
								
								
								
							
							
						
						
									
										6
									
								
								config.c
								
								
								
								
							|  | @ -238,6 +238,12 @@ int git_config_int(const char *name, const char *value) | ||||||
| 		int val = strtol(value, &end, 0); | 		int val = strtol(value, &end, 0); | ||||||
| 		if (!*end) | 		if (!*end) | ||||||
| 			return val; | 			return val; | ||||||
|  | 		if (!strcasecmp(end, "k")) | ||||||
|  | 			return val * 1024; | ||||||
|  | 		if (!strcasecmp(end, "m")) | ||||||
|  | 			return val * 1024 * 1024; | ||||||
|  | 		if (!strcasecmp(end, "g")) | ||||||
|  | 			return val * 1024 * 1024 * 1024; | ||||||
| 	} | 	} | ||||||
| 	die("bad config value for '%s' in %s", name, config_file_name); | 	die("bad config value for '%s' in %s", name, config_file_name); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -391,5 +391,15 @@ EOF | ||||||
|  |  | ||||||
| test_expect_success "rename succeeded" "diff -u expect .git/config" | test_expect_success "rename succeeded" "diff -u expect .git/config" | ||||||
|  |  | ||||||
|  | test_expect_success numbers ' | ||||||
|  |  | ||||||
|  | 	git-repo-config kilo.gram 1k && | ||||||
|  | 	git-repo-config mega.ton 1m && | ||||||
|  | 	k=$(git-repo-config --int --get kilo.gram) && | ||||||
|  | 	test z1024 = "z$k" && | ||||||
|  | 	m=$(git-repo-config --int --get mega.ton) && | ||||||
|  | 	test z1048576 = "z$m" | ||||||
|  | ' | ||||||
|  |  | ||||||
| test_done | test_done | ||||||
|  |  | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Shawn O. Pearce
						Shawn O. Pearce