All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
	Christian Couder <christian.couder@gmail.com>
Subject: Re: [PATCH v3 2/5] fetch: use strbuf to format FETCH_HEAD updates
Date: Mon, 11 Jan 2021 12:10:23 +0100	[thread overview]
Message-ID: <X/wyHxLcYtQb7icq@ncase> (raw)
In-Reply-To: <a19762690eb7f9957ac31d73e110f0103aeb2307.1610362744.git.ps@pks.im>

[-- Attachment #1: Type: text/plain, Size: 2503 bytes --]

On Mon, Jan 11, 2021 at 12:05:20PM +0100, Patrick Steinhardt wrote:
> This commit refactors `append_fetch_head()` to use a `struct strbuf` for
> formatting the update which we're about to append to the FETCH_HEAD
> file. While the refactoring doesn't have much of a benefit right now, it
> servers as a preparatory step to implement atomic fetches where we need
> to buffer all updates to FETCH_HEAD and only flush them out if all
> reference updates succeeded.
> 
> No change in behaviour is expected from this commit.

Forgot to add my

Signed-off-by: Patrick Steinhardt <ps@pks.im>

Will amend in v4.

Patrick

> ---
>  builtin/fetch.c | 16 +++++++++++-----
>  1 file changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/builtin/fetch.c b/builtin/fetch.c
> index 50f0306a92..1252f37493 100644
> --- a/builtin/fetch.c
> +++ b/builtin/fetch.c
> @@ -899,6 +899,7 @@ static int iterate_ref_map(void *cb_data, struct object_id *oid)
>  
>  struct fetch_head {
>  	FILE *fp;
> +	struct strbuf buf;
>  };
>  
>  static int open_fetch_head(struct fetch_head *fetch_head)
> @@ -909,6 +910,7 @@ static int open_fetch_head(struct fetch_head *fetch_head)
>  		fetch_head->fp = fopen(filename, "a");
>  		if (!fetch_head->fp)
>  			return error_errno(_("cannot open %s"), filename);
> +		strbuf_init(&fetch_head->buf, 0);
>  	} else {
>  		fetch_head->fp = NULL;
>  	}
> @@ -941,14 +943,17 @@ static void append_fetch_head(struct fetch_head *fetch_head,
>  			return;
>  	}
>  
> -	fprintf(fetch_head->fp, "%s\t%s\t%s",
> -		oid_to_hex_r(old_oid_hex, old_oid), merge_status_marker, note);
> +	strbuf_addf(&fetch_head->buf, "%s\t%s\t%s",
> +		    oid_to_hex_r(old_oid_hex, old_oid), merge_status_marker, note);
>  	for (i = 0; i < url_len; ++i)
>  		if ('\n' == url[i])
> -			fputs("\\n", fetch_head->fp);
> +			strbuf_addstr(&fetch_head->buf, "\\n");
>  		else
> -			fputc(url[i], fetch_head->fp);
> -	fputc('\n', fetch_head->fp);
> +			strbuf_addch(&fetch_head->buf, url[i]);
> +	strbuf_addch(&fetch_head->buf, '\n');
> +
> +	strbuf_write(&fetch_head->buf, fetch_head->fp);
> +	strbuf_reset(&fetch_head->buf);
>  }
>  
>  static void commit_fetch_head(struct fetch_head *fetch_head)
> @@ -962,6 +967,7 @@ static void close_fetch_head(struct fetch_head *fetch_head)
>  		return;
>  
>  	fclose(fetch_head->fp);
> +	strbuf_release(&fetch_head->buf);
>  }
>  
>  static const char warn_show_forced_updates[] =
> -- 
> 2.30.0
> 



[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2021-01-11 11:11 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-07 13:51 [PATCH 0/2] fetch: implement support for atomic reference updates Patrick Steinhardt
2021-01-07 13:51 ` [PATCH 1/2] fetch: allow passing a transaction to `s_update_ref()` Patrick Steinhardt
2021-01-07 22:59   ` Junio C Hamano
2021-01-08  0:45     ` Christian Couder
2021-01-08  7:18       ` Junio C Hamano
2021-01-07 13:51 ` [PATCH 2/2] fetch: implement support for atomic reference updates Patrick Steinhardt
2021-01-08  0:19   ` Junio C Hamano
2021-01-08 12:11 ` [PATCH v2 0/4] " Patrick Steinhardt
2021-01-08 12:11   ` [PATCH v2 1/4] fetch: extract writing to FETCH_HEAD Patrick Steinhardt
2021-01-08 23:40     ` Junio C Hamano
2021-01-11 10:26       ` Patrick Steinhardt
2021-01-11 19:24         ` Junio C Hamano
2021-01-08 12:11   ` [PATCH v2 2/4] fetch: refactor `s_update_ref` to use common exit path Patrick Steinhardt
2021-01-08 23:50     ` Junio C Hamano
2021-01-11 10:28       ` Patrick Steinhardt
2021-01-08 12:11   ` [PATCH v2 3/4] fetch: allow passing a transaction to `s_update_ref()` Patrick Steinhardt
2021-01-08 23:53     ` Junio C Hamano
2021-01-08 12:11   ` [PATCH v2 4/4] fetch: implement support for atomic reference updates Patrick Steinhardt
2021-01-09  0:05     ` Junio C Hamano
2021-01-11 10:42       ` Patrick Steinhardt
2021-01-11 19:47         ` Junio C Hamano
2021-01-12 12:22           ` Patrick Steinhardt
2021-01-12 12:29             ` Patrick Steinhardt
2021-01-12 19:19             ` Junio C Hamano
2021-01-11 11:05 ` [PATCH v3 0/5] " Patrick Steinhardt
2021-01-11 11:05   ` [PATCH v3 1/5] fetch: extract writing to FETCH_HEAD Patrick Steinhardt
2021-01-11 23:16     ` Junio C Hamano
2021-01-11 11:05   ` [PATCH v3 2/5] fetch: use strbuf to format FETCH_HEAD updates Patrick Steinhardt
2021-01-11 11:10     ` Patrick Steinhardt [this message]
2021-01-11 11:17     ` Christian Couder
2021-01-11 23:21     ` Junio C Hamano
2021-01-11 11:05   ` [PATCH v3 3/5] fetch: refactor `s_update_ref` to use common exit path Patrick Steinhardt
2021-01-11 11:05   ` [PATCH v3 4/5] fetch: allow passing a transaction to `s_update_ref()` Patrick Steinhardt
2021-01-11 11:05   ` [PATCH v3 5/5] fetch: implement support for atomic reference updates Patrick Steinhardt
2021-01-12  0:04   ` [PATCH v3 0/5] " Junio C Hamano
2021-01-12 12:27 ` [PATCH v4 " Patrick Steinhardt
2021-01-12 12:27   ` [PATCH v4 1/5] fetch: extract writing to FETCH_HEAD Patrick Steinhardt
2021-01-12 12:27   ` [PATCH v4 2/5] fetch: use strbuf to format FETCH_HEAD updates Patrick Steinhardt
2021-01-12 12:27   ` [PATCH v4 3/5] fetch: refactor `s_update_ref` to use common exit path Patrick Steinhardt
2021-01-12 12:27   ` [PATCH v4 4/5] fetch: allow passing a transaction to `s_update_ref()` Patrick Steinhardt
2021-01-12 12:27   ` [PATCH v4 5/5] fetch: implement support for atomic reference updates Patrick Steinhardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=X/wyHxLcYtQb7icq@ncase \
    --to=ps@pks.im \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.