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

Re: [PATCH v3] submodule: port subcommand 'set-branch' from shell to C

From
Junio C Hamano <gitster@pobox.com>
Date
May 24, 2020, 23:15 UTC
Message-ID
<xmqqtv05orgq.fsf@gitster.c.googlers.com>
In-Reply-To
<nycvar.QRO.7.76.6.2005230012090.56@tvgsbejvaqbjf.bet>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 18 quoted lines
>> +	config_set_in_gitmodules_file_gently(config_name, opt_branch);
>
> What happens if this fails? E.g. when the permission is denied or disk is
> full? This C code would then still `return 0`, pretending that it
> succeeded. But the original shell script calls `git submodule--helper
> config [...]` which calls `module_config()`, which in turn passes through
> the return value of the `config_set_in_gitmodules_file_gently()` call.
>
> In other words, you need something like this:
>
> 	int ret;
>
> 	[...]
>
> 	ret = config_set_in_gitmodules_file_gently(config_name, opt_branch);
>
> 	free(config_name);
> 	return ret;

Making sure we check the return value of helper functions we call is a good discipline, but this is not quite enough.

Show 5 quoted lines
> So I think we'll also need this (it's unrelated to your patch, at least
> unrelated enough that it merits its own, separate patch):
>
> -                       return commands[i].fn(argc - 1, argv + 1, prefix);
> +                       return !!commands[i].fn(argc - 1, argv + 1, prefix);

I checked (not all but most of the) functions in that commands[] table and they all seem to return 0 for success and positive non-zero for failure.

config_set_in_gitmodules_file_gently() takes the return value of a helper function in its 'ret', gives an warning if it is negative, and returns that 'ret' literally to the caller. You suggestion allows module_set_branch() return a negative value as-is. You'd need to return !!ret from there.

The "unrelated" change becomes only necessary if you do not do the !!ret in module_set_branch(); otherwise it is unneeded, I think.

Thanks.
Previous: Johannes SchindelinNext: Junio C Hamano
Message 9 of 29 in “submodule: port subcommand 'set-branch' from shell to C”
  1. submodule: port subcommand 'set-branch' from shell to CShourya Shukla, May 21, 2020
  2. Junio C HamanoMay 21, 2020
  3. Denton LiuMay 21, 2020
  4. Junio C HamanoMay 21, 2020
  5. Shourya ShuklaMay 22, 2020
  6. Junio C HamanoMay 24, 2020
  7. Đoàn Trần Công DanhMay 21, 2020
  8. Johannes SchindelinMay 22, 2020
  9. Junio C HamanoMay 24, 2020
  10. Junio C HamanoMay 24, 2020
  11. submodule: port subcommand 'set-branch' from shell to CShourya Shukla, May 23, 2020
  12. Kaartic SivaraamMay 23, 2020
  13. Đoàn Trần Công DanhMay 23, 2020
  14. Shourya ShuklaMay 27, 2020
  15. Đoàn Trần Công DanhMay 28, 2020
  16. Đoàn Trần Công DanhMay 28, 2020
  17. Đoàn Trần Công DanhMay 28, 2020
  18. [GSoC][PATCH v5] submodule: port subcommand 'set-branch' from shell to CShourya Shukla, Jun 2, 2020
  19. Junio C HamanoJun 2, 2020
  20. Đoàn Trần Công DanhJun 3, 2020
  21. Junio C HamanoJun 3, 2020
  22. Shourya ShuklaJun 4, 2020
  23. Christian CouderJun 4, 2020
  24. Junio C HamanoJun 4, 2020
  25. Kaartic SivaraamJun 2, 2020
  26. Kaartic SivaraamJun 2, 2020
  27. Christian CouderJun 2, 2020
  28. Shourya ShuklaJun 4, 2020
  29. Kaartic SivaraamJun 4, 2020

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.