git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v1 1/6] Allow --porcelain[=<n>] in status and commit commands

From
JHJeff Hostetler <git@jeffhostetler.com>
Date
Jul 20, 2016, 15:38 UTC
Message-ID
<578F9AE8.4000407@jeffhostetler.com>
In-Reply-To
<alpine.DEB.2.20.1607201600050.14111@virtualbox>
On 07/20/2016 11:08 AM, Johannes Schindelin wrote:
Show 18 quoted lines
> On Tue, 19 Jul 2016, Jeff Hostetler wrote:
>> diff --git a/builtin/commit.c b/builtin/commit.c
>> +	} else if (arg) {
>> +		int n = strtol(arg, NULL, 10);
>> +		if (n == 1)
>> +			*value = STATUS_FORMAT_PORCELAIN;
>> +		else
>> +			die("unsupported porcelain version");
>> +	} else {
>> +		*value = STATUS_FORMAT_PORCELAIN;
>
> This could be folded into the previous conditional:
>
> 	}
> 	else {
> 		int n = arg ? strtol(arg, NULL, 10) : 1;
> 		...
>

I did it this way because I didn't want to make any assumptions here on the numeric value of the enum values. Or rather, I didn't want to add specific assignments to the enum type.

This also helps make it easier to see my later commit:
         else if (n == 2) *value = STATUS_FORMAT_PORCELAIN_V2;
Also, I didn't want to alter the order of assignments to the global
status_format variable.  That is, if I capture the value of <n> in
a porcelain_version variable and assign that to status_format
afterwards, there is opportunity for mistakes if they type:
         git status --short --porcelain=1 --long
where the status_format variable is assigned 3 times.
Show 25 quoted lines
> Having said this, ...
>
>> @@ -1336,9 +1347,9 @@ int cmd_status(int argc, const char **argv, const char *prefix)
>>   			    N_("show status concisely"), STATUS_FORMAT_SHORT),
>>   		OPT_BOOL('b', "branch", &s.show_branch,
>>   			 N_("show branch information")),
>> -		OPT_SET_INT(0, "porcelain", &status_format,
>> -			    N_("machine-readable output"),
>> -			    STATUS_FORMAT_PORCELAIN),
>> +		{ OPTION_CALLBACK, 0, "porcelain", &status_format,
>> +		  N_("version"), N_("machine-readable output"),
>> +		  PARSE_OPT_OPTARG, opt_parse_porcelain },
>
> How about using a COUNTUP here instead? We could then set the status
> format afterwards, like this:
>
> 	if (porcelain == 0)
> 		status_format = STATUS_FORMAT_UNSPECIFIED;
> 	else {
> 		status_format = STATUS_FORMAT_PORCELAIN;
> 		if (porcelain > 1)
> 			warning("No porcelain v%d; falling back to v1",
> 				porcelain);
> 	}
>

Maybe I misread the COUNTUP docs, but it looked like it would allow "--porcelain --porcelain", but not "--porcelain=2".

Jeff
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 4 of 41 in “Porcelain Status V2”
  1. 0/6 Porcelain Status V2Jeff Hostetler, Jul 19, 2016
  2. 1/6 Allow --porcelain[=<n>] in status and commit commandsJeff Hostetler, Jul 19, 2016
  3. Johannes SchindelinJul 20, 2016
  4. Jeff HostetlerJul 20, 2016
  5. Johannes SchindelinJul 21, 2016
  6. Jeff KingJul 20, 2016
  7. Jeff HostetlerJul 20, 2016
  8. Junio C HamanoJul 20, 2016
  9. 2/6 Status and checkout unit tests for --porcelain[=<n>]Jeff Hostetler, Jul 19, 2016
  10. Johannes SchindelinJul 20, 2016
  11. Jeff HostetlerJul 20, 2016
  12. Jeff KingJul 20, 2016
  13. Jeff KingJul 20, 2016
  14. Jeff HostetlerJul 20, 2016
  15. Jeff HostetlerJul 20, 2016
  16. 3/6 Per-file output for Porcelain Status V2Jeff Hostetler, Jul 19, 2016
  17. Junio C HamanoJul 20, 2016
  18. Johannes SchindelinJul 21, 2016
  19. Junio C HamanoJul 20, 2016
  20. Jeff HostetlerJul 21, 2016
  21. Junio C HamanoJul 22, 2016
  22. 4/6 Expanded branch header for Porcelain Status V2Jeff Hostetler, Jul 19, 2016
  23. Jeff KingJul 20, 2016
  24. Jeff HostetlerJul 20, 2016
  25. Jeff KingJul 20, 2016
  26. Johannes SchindelinJul 21, 2016
  27. Jeff HostetlerJul 21, 2016
  28. 6/6 Unit tests for V2 porcelain statusJeff Hostetler, Jul 19, 2016
  29. Jakub NarębskiJul 20, 2016
  30. Jeff HostetlerJul 20, 2016
  31. Jakub NarębskiJul 20, 2016
  32. Johannes SchindelinJul 21, 2016
  33. 5/6 Add porcelain V2 documentation to status manpageJeff Hostetler, Jul 19, 2016
  34. Jakub NarębskiJul 20, 2016
  35. Jeff HostetlerJul 20, 2016
  36. Jakub NarębskiJul 20, 2016
  37. Junio C HamanoJul 20, 2016
  38. Jeff KingJul 20, 2016
  39. Jeff HostetlerJul 20, 2016
  40. Jeff KingJul 20, 2016
  41. Johannes SchindelinJul 21, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.