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

Re: [PATCH 1/4] remote: use skip_prefix

From
Thomas Gummerer <t.gummerer@gmail.com>
Date
Feb 15, 2016, 20:37 UTC
Message-ID
<20160215203730.GC13775@hank>
In-Reply-To
<20160215181837.GE26443@sigill.intra.peff.net>
On 02/15, Jeff King wrote:
Show 14 quoted lines
> On Mon, Feb 15, 2016 at 06:42:27PM +0100, Thomas Gummerer wrote:
>
> > 95b567c7 ("use skip_prefix to avoid repeating strings") transformed
> > calls using starts_with() and then skipping the length of the prefix to
> > skip_prefix() calls.  In remote.c there are a few calls like:
> >
> >   if (starts_with(foo, "bar"))
> >       foo += 3
> >
> > These calls weren't touched by the commit mentioned above, but can
> > benefit from the same treatment to avoid magic numbers.
>
> This is definitely an improvement, but I think we can actually go a step
> further here, and use parse_config_key. Like:

Thanks, I had no idea about this function :) It makes the diff a lot noisier, but I do think the end result is better.

Show 29 quoted lines
> diff --git a/remote.c b/remote.c
> index 21e4ec3..8d2c3ca 100644
> --- a/remote.c
> +++ b/remote.c
> @@ -318,15 +318,14 @@ static void read_branches_file(struct remote *remote)
>  static int handle_config(const char *key, const char *value, void *cb)
>  {
>  	const char *name;
> +	int namelen;
>  	const char *subkey;
>  	struct remote *remote;
>  	struct branch *branch;
> -	if (starts_with(key, "branch.")) {
> -		name = key + 7;
> -		subkey = strrchr(name, '.');
> -		if (!subkey)
> +	if (starts_with(key, "branch", &name, &namelen, &subkey)) {
> +		if (!name)
>  			return 0;
> -		branch = make_branch(name, subkey - name);
> +		branch = make_branch(name, namelen);
>  		if (!strcmp(subkey, ".remote")) {
>  			return git_config_string(&branch->remote_name, key, value);
>  		} else if (!strcmp(subkey, ".pushremote")) {
>
> and so on. The difference in lines of code isn't that great, but I think
> it makes the resulting code more obvious to read.
>
> -Peff

-- Thomas

Previous: Jeff KingNext: Thomas Gummerer
Message 6 of 18 in “git remote improvements”
  1. 0/4 git remote improvementsThomas Gummerer, Feb 15, 2016
  2. 1/4 remote: use skip_prefixThomas Gummerer, Feb 15, 2016
  3. Jeff KingFeb 15, 2016
  4. Eric SunshineFeb 15, 2016
  5. Jeff KingFeb 15, 2016
  6. Thomas GummererFeb 15, 2016
  7. 2/4 remote: simplify remote_is_configured()Thomas Gummerer, Feb 15, 2016
  8. Jeff KingFeb 15, 2016
  9. Thomas GummererFeb 15, 2016
  10. Junio C HamanoFeb 15, 2016
  11. 3/4 remote: actually check if remote exitsThomas Gummerer, Feb 15, 2016
  12. Jeff KingFeb 15, 2016
  13. 4/4 remote: use remote_is_configured() for add and renameThomas Gummerer, Feb 15, 2016
  14. Jeff KingFeb 15, 2016
  15. Thomas GummererFeb 15, 2016
  16. Johannes SchindelinFeb 17, 2016
  17. Thomas GummererFeb 17, 2016
  18. Johannes SchindelinFeb 17, 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.