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

Re: [PATCH v4] branch: support for shortcuts like @{-1}, completed

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 8, 2022, 04:17 UTC
Message-ID
<xmqq8rlrc5jp.fsf@gitster.g>
In-Reply-To
<2e164aea-7dd8-5018-474a-01643553ea49@gmail.com>
Rubén Justo <rjusto@gmail.com> writes:
Show 33 quoted lines
>  	} else if (new_upstream) {
> -		struct branch *branch = branch_get(argv[0]);
> +		struct branch *branch;
> +		struct strbuf buf = STRBUF_INIT;
>  
> -		if (argc > 1)
> +		if (!argc)
> +			branch = branch_get(NULL);
> +		else if (argc == 1) {
> +			strbuf_branchname(&buf, argv[0], INTERPRET_BRANCH_LOCAL);
> +			branch = branch_get(buf.buf);
> +		} else
>  			die(_("too many arguments to set new upstream"));
>  
>  		if (!branch) {
> @@ -854,11 +867,17 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
>  		dwim_and_setup_tracking(the_repository, branch->name,
>  					new_upstream, BRANCH_TRACK_OVERRIDE,
>  					quiet);
> +		strbuf_release(&buf);
>  	} else if (unset_upstream) {
> -		struct branch *branch = branch_get(argv[0]);
> +		struct branch *branch;
>  		struct strbuf buf = STRBUF_INIT;
>  
> -		if (argc > 1)
> +		if (!argc)
> +			branch = branch_get(NULL);
> +		else if (argc == 1) {
> +			strbuf_branchname(&buf, argv[0], INTERPRET_BRANCH_LOCAL);
> +			branch = branch_get(buf.buf);
> +		} else
>  			die(_("too many arguments to unset upstream"));
The above two are a bit repetitious.  A helper like
	static struct branch *interpret_local(int ac, const char **av)
	{
		struct branch *branch;
                if (!ac) {
                	branch = branch_get(NULL);
		} else if (ac == 1) {
			struct strbuf buf = STRBUF_INIT;
			strbuf_branchname(&buf, av[0], INTERPRET_BRANCH_LOCAL);
			branch = branch_get(buf.buf);
			strbuf_release(&buf);
		} else {
			die(_("too many arguments"));
		}
		return branch;
	}

might be useful, and it frees the callers from worrying about temporary allocations.

But the code written is OK as-is.
Previous: Rubén JustoNext: Rubén Justo
Message 28 of 38 in “branch: support for at-refs like @{-1} in --edit-description, --set-upstream-to and --unset-upstream”
  1. 0/2 branch: support for at-refs like @{-1} in --edit-description, --set-upstream-to and --unset-upstreamRubén Justo via GitGitGadget, Sep 5, 2022
  2. 2/2 branch: support for at-refs like @{-1}Rubén Justo via GitGitGadget, Sep 5, 2022
  3. 1/2 branch: refactor edit_description command switch caseRubén Justo via GitGitGadget, Sep 5, 2022
  4. 0/2 branch: support for shortcuts like @{-1}, completedRubén Justo, Sep 7, 2022
  5. 1/2 branch: refactor "edit_description" code pathRubén Justo, Sep 7, 2022
  6. Junio C HamanoSep 7, 2022
  7. Rubén JustoSep 7, 2022
  8. Rubén JustoSep 8, 2022
  9. 2/2 branch: support for shortcuts like @{-1} completedRubén Justo, Sep 7, 2022
  10. 0/2 branch: support for shortcuts like @{-1}, completedRubén Justo, Sep 8, 2022
  11. 1/2 branch: refactor "edit_description" code pathRubén Justo, Sep 8, 2022
  12. branch: error codes for "edit_description"Rubén Justo, Sep 8, 2022
  13. Junio C HamanoSep 8, 2022
  14. 2/2 branch: support for shortcuts like @{-1} completedRubén Justo, Sep 8, 2022
  15. branch: support for shortcuts like @{-1}, completedRubén Justo, Oct 8, 2022
  16. Eric SunshineOct 8, 2022
  17. Junio C HamanoOct 8, 2022
  18. Rubén JustoOct 8, 2022
  19. Eric SunshineOct 8, 2022
  20. Rubén JustoOct 8, 2022
  21. Eric SunshineOct 8, 2022
  22. Junio C HamanoOct 8, 2022
  23. Rubén JustoOct 8, 2022
  24. Rubén JustoOct 8, 2022
  25. Eric SunshineOct 9, 2022
  26. Junio C HamanoOct 9, 2022
  27. Rubén JustoOct 9, 2022
  28. Junio C HamanoOct 8, 2022
  29. Rubén JustoOct 8, 2022
  30. branch: support for shortcuts like @{-1}, completedRubén Justo, Oct 8, 2022
  31. Junio C HamanoOct 9, 2022
  32. Junio C HamanoOct 9, 2022
  33. Rubén JustoOct 9, 2022
  34. Junio C HamanoOct 10, 2022
  35. Rubén JustoOct 10, 2022
  36. Junio C HamanoOct 10, 2022
  37. Rubén JustoOct 10, 2022
  38. branch: support for shortcuts like @{-1}, completedRubén Justo, Oct 10, 2022

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.