All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Han-Wen Nienhuys via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Han-Wen Nienhuys <hanwenn@gmail.com>
Subject: [PATCH v2 0/4] Handle FETCH_HEAD and MERGE_HEAD generically
Date: Wed, 19 Aug 2020 14:27:54 +0000	[thread overview]
Message-ID: <pull.705.v2.git.1597847278.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.705.git.1597678796.gitgitgadget@gmail.com>

This moves the FETCH_HEAD handling into refs.c as discussed in 
https://public-inbox.org/git/xmqq5z9pav01.fsf@gitster.c.googlers.com/

Han-Wen Nienhuys (4):
  refs: split off reading loose ref data in separate function
  refs: fix comment about submodule ref_stores
  refs: move gitdir into base ref_store
  refs: read FETCH_HEAD and MERGE_HEAD generically

 refs.c                | 28 ++++++++++++++++++++++++-
 refs/files-backend.c  | 49 ++++++++++++++++++++++---------------------
 refs/packed-backend.c |  1 +
 refs/refs-internal.h  | 11 +++++++++-
 4 files changed, 63 insertions(+), 26 deletions(-)


base-commit: 2befe97201e1f3175cce557866c5822793624b5a
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-705%2Fhanwen%2Ffetch-head-generically-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-705/hanwen/fetch-head-generically-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/705

Range-diff vs v1:

 1:  10b333695e ! 1:  557727064d Split off reading loose ref data in separate function
     @@ Metadata
      Author: Han-Wen Nienhuys <hanwen@google.com>
      
       ## Commit message ##
     -    Split off reading loose ref data in separate function
     +    refs: split off reading loose ref data in separate function
      
          This prepares for handling FETCH_HEAD (which is not a regular ref)
          separately from the ref backend.
 2:  52b397ec9e = 2:  6da0e62e73 refs: fix comment about submodule ref_stores
 3:  c624e17dc6 = 3:  6263b4b3f2 refs: move gitdir into base ref_store
 4:  d4e9c5f499 ! 4:  a3e903e4c0 refs: read FETCH_HEAD generically
     @@ Metadata
      Author: Han-Wen Nienhuys <hanwen@google.com>
      
       ## Commit message ##
     -    refs: read FETCH_HEAD generically
     +    refs: read FETCH_HEAD and MERGE_HEAD generically
      
     -    The FETCH_HEAD ref must be stored in a file, regardless of the type of
     -    ref backend. This is because it can hold more than just a single ref.
     +    The FETCH_HEAD and MERGE_HEAD refs must be stored in a file, regardless of the
     +    type of ref backend. This is because they can hold more than just a single ref.
      
     -    To accomodate FETCH_HEAD for alternate ref backends, read FETCH_HEAD
     -    from a file generically in refs_read_raw_ref()
     +    To accomodate them for alternate ref backends, read them from a file generically
     +    in refs_read_raw_ref()
      
          Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
      
     @@ refs.c: int for_each_rawref(each_ref_fn fn, void *cb_data)
       	return refs_for_each_rawref(get_main_ref_store(the_repository), fn, cb_data);
       }
       
     -+static int refs_read_fetch_head(struct ref_store *ref_store,
     -+				struct object_id *oid, struct strbuf *referent,
     -+				unsigned int *type)
     ++static int refs_read_special_head(struct ref_store *ref_store,
     ++				  const char *refname, struct object_id *oid,
     ++				  struct strbuf *referent, unsigned int *type)
      +{
      +	struct strbuf full_path = STRBUF_INIT;
      +	struct strbuf content = STRBUF_INIT;
      +	int result = -1;
     -+	strbuf_addf(&full_path, "%s/%s", ref_store->gitdir, "FETCH_HEAD");
     ++	strbuf_addf(&full_path, "%s/%s", ref_store->gitdir, refname);
      +
      +	if (strbuf_read_file(&content, full_path.buf, 0) < 0)
      +		goto done;
     @@ refs.c: int for_each_rawref(each_ref_fn fn, void *cb_data)
       		      struct strbuf *referent, unsigned int *type)
       {
      -	return ref_store->be->read_raw_ref(ref_store, refname, oid, referent, type);
     -+	if (!strcmp(refname, "FETCH_HEAD")) {
     -+		return refs_read_fetch_head(ref_store, oid, referent, type);
     ++	if (!strcmp(refname, "FETCH_HEAD") || !strcmp(refname, "MERGE_HEAD")) {
     ++		return refs_read_special_head(ref_store, refname, oid, referent,
     ++					      type);
      +	}
      +
      +	return ref_store->be->read_raw_ref(ref_store, refname, oid, referent,

-- 
gitgitgadget

  parent reply	other threads:[~2020-08-19 14:28 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-17 15:39 [PATCH 0/4] Handle FETCH_HEAD generically Han-Wen Nienhuys via GitGitGadget
2020-08-17 15:39 ` [PATCH 1/4] Split off reading loose ref data in separate function Han-Wen Nienhuys via GitGitGadget
2020-08-17 15:39 ` [PATCH 2/4] refs: fix comment about submodule ref_stores Han-Wen Nienhuys via GitGitGadget
2020-08-17 15:39 ` [PATCH 3/4] refs: move gitdir into base ref_store Han-Wen Nienhuys via GitGitGadget
2020-08-17 15:39 ` [PATCH 4/4] refs: read FETCH_HEAD generically Han-Wen Nienhuys via GitGitGadget
2020-08-17 19:40 ` [PATCH 0/4] Handle " Junio C Hamano
2020-08-19 14:27 ` Han-Wen Nienhuys via GitGitGadget [this message]
2020-08-19 14:27   ` [PATCH v2 1/4] refs: split off reading loose ref data in separate function Han-Wen Nienhuys via GitGitGadget
2020-08-19 14:27   ` [PATCH v2 2/4] refs: fix comment about submodule ref_stores Han-Wen Nienhuys via GitGitGadget
2020-08-19 14:27   ` [PATCH v2 3/4] refs: move gitdir into base ref_store Han-Wen Nienhuys via GitGitGadget
2020-08-19 14:27   ` [PATCH v2 4/4] refs: read FETCH_HEAD and MERGE_HEAD generically Han-Wen Nienhuys via GitGitGadget
2020-08-19 21:09   ` [PATCH v2 0/4] Handle " Junio C Hamano

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=pull.705.v2.git.1597847278.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=hanwenn@gmail.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.