From: "Han-Wen Nienhuys via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Han-Wen Nienhuys" <hanwen@google.com>,
"Jonathan Tan" <jonathantanmy@google.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Han-Wen Nienhuys" <hanwenn@gmail.com>
Subject: [PATCH v3 0/5] refs: cleanup errno sideband ref related functions
Date: Mon, 05 Jul 2021 20:56:00 +0000 [thread overview]
Message-ID: <pull.1012.v3.git.git.1625518566.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1012.v2.git.git.1623329868.gitgitgadget@gmail.com>
v5
* address Ævar's comment; punt on clearing errno.
Han-Wen Nienhuys (5):
refs: remove EINVAL errno output from specification of read_raw_ref_fn
refs/files-backend: stop setting errno from lock_ref_oid_basic
refs: make errno output explicit for read_raw_ref_fn
refs: add failure_errno to refs_read_raw_ref() signature
refs: make errno output explicit for refs_resolve_ref_unsafe
refs.c | 52 ++++++++++++++++++++++++++-----------
refs/debug.c | 4 +--
refs/files-backend.c | 60 ++++++++++++++++++++-----------------------
refs/packed-backend.c | 15 ++++++-----
refs/refs-internal.h | 34 ++++++++++++++++--------
5 files changed, 98 insertions(+), 67 deletions(-)
base-commit: 670b81a890388c60b7032a4f5b879f2ece8c4558
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1012%2Fhanwen%2Feinval-sideband-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1012/hanwen/einval-sideband-v3
Pull-Request: https://github.com/git/git/pull/1012
Range-diff vs v2:
1: f9b92e62b59 = 1: e2a0e5387ab refs: remove EINVAL errno output from specification of read_raw_ref_fn
2: cbe09a48036 ! 2: c594c9c5c67 refs/files-backend: stop setting errno from lock_ref_oid_basic
@@ Commit message
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Reviewed-by: Jonathan Tan <jonathantanmy@google.com>
+ Reviewed-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## refs/files-backend.c ##
@@ refs/files-backend.c: static int create_reflock(const char *path, void *cb)
@@ refs/files-backend.c: static struct ref_lock *lock_ref_oid_basic(struct files_re
- last_errno = errno;
+ int last_errno = errno;
if (last_errno != ENOTDIR ||
- !refs_verify_refname_available(&refs->base, refname,
- extras, skip, err))
+- !refs_verify_refname_available(&refs->base, refname,
+- extras, skip, err))
++ /* in case of D/F conflict, try to generate a better error
++ * message. If that fails, fall back to strerror(ENOTDIR).
++ */
++ !refs_verify_refname_available(&refs->base, refname, extras,
++ skip, err))
+ strbuf_addf(err, "unable to resolve reference '%s': %s",
+ refname, strerror(last_errno));
+
@@ refs/files-backend.c: static struct ref_lock *lock_ref_oid_basic(struct files_ref_store *refs,
if (is_null_oid(&lock->old_oid) &&
refs_verify_refname_available(refs->packed_ref_store, refname,
3: 3e2831e59c8 ! 3: b017caf54ba refs: make errno output explicit for read_raw_ref_fn
@@ Metadata
## Commit message ##
refs: make errno output explicit for read_raw_ref_fn
+ This makes it explicit how alternative ref backends should report errors in
+ read_raw_ref_fn.
+
read_raw_ref_fn needs to supply a credible errno for a number of cases. These
are primarily:
@@ Commit message
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Reviewed-by: Jonathan Tan <jonathantanmy@google.com>
+ Reviewed-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## refs.c ##
@@ refs.c: int refs_read_raw_ref(struct ref_store *ref_store,
const char *refname, struct object_id *oid,
struct strbuf *referent, unsigned int *type)
{
-+ int result, failure;
++ int result;
++ int failure_errno;
if (!strcmp(refname, "FETCH_HEAD") || !strcmp(refname, "MERGE_HEAD")) {
return refs_read_special_head(ref_store, refname, oid, referent,
type);
@@ refs.c: int refs_read_raw_ref(struct ref_store *ref_store,
- return ref_store->be->read_raw_ref(ref_store, refname, oid, referent,
- type);
-+ failure = 0;
++ failure_errno = 0;
+ result = ref_store->be->read_raw_ref(ref_store, refname, oid, referent,
-+ type, &failure);
-+ errno = failure;
++ type, &failure_errno);
++ if (failure_errno)
++ errno = failure_errno;
+ return result;
}
@@ refs/files-backend.c: stat_ref:
out:
- save_errno = errno;
-+ if (failure_errno)
-+ *failure_errno = errno;
++ *failure_errno = errno;
strbuf_release(&sb_path);
strbuf_release(&sb_contents);
- errno = save_errno;
@@ refs/refs-internal.h: typedef int reflog_expire_fn(struct ref_store *ref_store,
- * an object ID, it is broken; set REF_ISBROKEN in type, and return -1
- * (errno should not be ENOENT) If there is another error reading the
- * ref, set errno appropriately and return -1.
-+ * Return 0 on success. If the ref doesn't exist, set failure_errno to ENOENT
-+ * and return -1. If the ref exists but is neither a symbolic ref nor an object
-+ * ID, it is broken; set REF_ISBROKEN in type, and return -1 (failure_errno
-+ * should not be ENOENT). The files backend may return EISDIR (if the ref name
-+ * is a directory) and ENOTDIR (if a ref prefix is not a directory). If there is
-+ * another error reading the ref, set failure_errno appropriately and return -1.
++ * Return 0 on success, or -1 on failure. If the ref exists but is neither a
++ * symbolic ref nor an object ID, it is broken. In this case set REF_ISBROKEN in
++ * type, and return -1 (failure_errno should not be ENOENT)
++ *
++ * failure_errno provides errno codes that are interpreted beyond error
++ * reporting. The following error codes have special meaning:
++ * * ENOENT: the ref doesn't exist
++ * * EISDIR: ref name is a directory
++ * * ENOTDIR: ref prefix is not a directory
*
* Backend-specific flags might be set in type as well, regardless of
* outcome.
4: 11b2184044d < -: ----------- refs: make errno output explicit for refs_resolve_ref_unsafe
6: 2b346caf1ae ! 4: 4aaa9d3bd6f refs: add failure_errno to refs_read_raw_ref() signature
@@ Metadata
## Commit message ##
refs: add failure_errno to refs_read_raw_ref() signature
- This makes the errno output of refs_read_raw_ref explicit.
+ This lets us use the explicit errno output parameter in refs_resolve_ref_unsafe.
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Reviewed-by: Jonathan Tan <jonathantanmy@google.com>
+ Reviewed-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## refs.c ##
@@ refs.c: done:
@@ refs.c: done:
+ struct object_id *oid, struct strbuf *referent,
+ unsigned int *type, int *failure_errno)
{
-- int result, failure;
+- int result;
+- int failure_errno;
++ int ignore;
+ if (failure_errno)
+ *failure_errno = 0;
++ else
++ failure_errno = &ignore;
++
if (!strcmp(refname, "FETCH_HEAD") || !strcmp(refname, "MERGE_HEAD")) {
return refs_read_special_head(ref_store, refname, oid, referent,
type);
}
-- failure = 0;
+- failure_errno = 0;
- result = ref_store->be->read_raw_ref(ref_store, refname, oid, referent,
-- type, &failure);
-- errno = failure;
+- type, &failure_errno);
+- if (failure_errno)
+- errno = failure_errno;
- return result;
+ return ref_store->be->read_raw_ref(ref_store, refname, oid, referent,
+ type, failure_errno);
}
- /* This function needs to return a meaningful errno on failure */
+-/* This function needs to return a meaningful errno on failure */
+-const char *refs_resolve_ref_unsafe(struct ref_store *refs,
+- const char *refname,
+- int resolve_flags,
+- struct object_id *oid, int *flags)
++const char *refs_resolve_ref_unsafe_with_errno(struct ref_store *refs,
++ const char *refname,
++ int resolve_flags,
++ struct object_id *oid,
++ int *flags, int *failure_errno)
+ {
+ static struct strbuf sb_refname = STRBUF_INIT;
+ struct object_id unused_oid;
+ int unused_flags;
++ int unused_errno;
+ int symref_count;
+
+ if (!oid)
+@@ refs.c: const char *refs_resolve_ref_unsafe(struct ref_store *refs,
+ flags = &unused_flags;
+
+ *flags = 0;
++ if (!failure_errno)
++ failure_errno = &unused_errno;
++ *failure_errno = 0;
+
+ if (check_refname_format(refname, REFNAME_ALLOW_ONELEVEL)) {
+ if (!(resolve_flags & RESOLVE_REF_ALLOW_BAD_NAME) ||
@@ refs.c: const char *refs_resolve_ref_unsafe(struct ref_store *refs,
for (symref_count = 0; symref_count < SYMREF_MAXDEPTH; symref_count++) {
@@ refs.c: const char *refs_resolve_ref_unsafe(struct ref_store *refs,
+ &read_flags, &read_failure)) {
*flags |= read_flags;
++ *failure_errno = read_failure;
++
/* In reading mode, refs must eventually resolve */
+ if (resolve_flags & RESOLVE_REF_READING)
+ return NULL;
@@ refs.c: const char *refs_resolve_ref_unsafe(struct ref_store *refs,
* may show errors besides ENOENT if there are
* similarly-named refs.
@@ refs.c: const char *refs_resolve_ref_unsafe(struct ref_store *refs,
return NULL;
oidclr(oid);
+@@ refs.c: const char *refs_resolve_ref_unsafe(struct ref_store *refs,
+ return NULL;
+ }
+
++const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,
++ int resolve_flags, struct object_id *oid,
++ int *flags)
++{
++ int ignore = 0;
++ return refs_resolve_ref_unsafe_with_errno(refs, refname, resolve_flags,
++ oid, flags, &ignore);
++}
++
+ /* backend functions */
+ int refs_init_db(struct strbuf *err)
+ {
@@ refs.c: int refs_verify_refname_available(struct ref_store *refs,
if (skip && string_list_has_string(skip, dirname.buf))
continue;
@@ refs/files-backend.c: stat_ref:
}
## refs/packed-backend.c ##
-@@ refs/packed-backend.c: static int packed_read_raw_ref(struct ref_store *ref_store, const char *refname,
-
- if (!rec) {
- /* refname is not a packed reference. */
-- *failure_errno = ENOENT;
-+ if (failure_errno)
-+ *failure_errno = ENOENT;
- return -1;
- }
-
@@ refs/packed-backend.c: int is_packed_transaction_needed(struct ref_store *ref_store,
ret = 0;
for (i = 0; i < transaction->nr; i++) {
struct ref_update *update = transaction->updates[i];
-+ int failure;
++ int failure_errno = 0;
unsigned int type;
struct object_id oid;
@@ refs/packed-backend.c: int is_packed_transaction_needed(struct ref_store *ref_st
- &oid, &referent, &type) ||
- errno != ENOENT) {
+ if (!refs_read_raw_ref(ref_store, update->refname, &oid,
-+ &referent, &type, &failure) ||
-+ failure != ENOENT) {
++ &referent, &type, &failure_errno) ||
++ failure_errno != ENOENT) {
/*
* We have to actually delete that reference
* -> this transaction is needed.
@@ refs/refs-internal.h: struct ref_update {
+ struct object_id *oid, struct strbuf *referent,
+ unsigned int *type, int *failure_errno);
- /* Like refs_resolve_ref_unsafe, but provide access to errno code that lead to a
- * failure. */
+ /*
+ * Write an error to `err` and return a nonzero value iff the same
5: 005ee8e6fb2 ! 5: ed5347d7bb6 refs: use refs_resolve_ref_unsafe_with_errno() where needed
@@ Metadata
Author: Han-Wen Nienhuys <hanwen@google.com>
## Commit message ##
- refs: use refs_resolve_ref_unsafe_with_errno() where needed
+ refs: make errno output explicit for refs_resolve_ref_unsafe
+
+ This introduces refs_resolve_ref_unsafe_with_errno(), which makes the API
+ contract for the errno output explicit. The implementation still relies on
+ the global errno variable to ensure no side effects of this refactoring.
lock_ref_oid_basic() in files-backend.c is the only caller of refs_resolve_ref()
- that needs error information to make logic decisions.
+ that needs error information to make logic decisions, so update that caller
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Reviewed-by: Jonathan Tan <jonathantanmy@google.com>
+ Reviewed-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## refs/files-backend.c ##
@@ refs/files-backend.c: static struct ref_lock *lock_ref_oid_basic(struct files_ref_store *refs,
@@ refs/files-backend.c: static struct ref_lock *lock_ref_oid_basic(struct files_re
if (!resolved) {
- int last_errno = errno;
- if (last_errno != ENOTDIR ||
-- !refs_verify_refname_available(&refs->base, refname,
-- extras, skip, err))
+ if (resolve_errno != ENOTDIR ||
-+ !refs_verify_refname_available(&refs->base, refname, extras,
-+ skip, err))
+ /* in case of D/F conflict, try to generate a better error
+ * message. If that fails, fall back to strerror(ENOTDIR).
+ */
+ !refs_verify_refname_available(&refs->base, refname, extras,
+ skip, err))
strbuf_addf(err, "unable to resolve reference '%s': %s",
- refname, strerror(last_errno));
+ refname, strerror(resolve_errno));
goto error_return;
}
+
+ ## refs/refs-internal.h ##
+@@ refs/refs-internal.h: int refs_read_raw_ref(struct ref_store *ref_store, const char *refname,
+ struct object_id *oid, struct strbuf *referent,
+ unsigned int *type, int *failure_errno);
+
++/* Like refs_resolve_ref_unsafe, but provide access to errno code that lead to a
++ * failure. */
++const char *refs_resolve_ref_unsafe_with_errno(struct ref_store *refs,
++ const char *refname,
++ int resolve_flags,
++ struct object_id *oid,
++ int *flags, int *failure_errno);
++
+ /*
+ * Write an error to `err` and return a nonzero value iff the same
+ * refname appears multiple times in `refnames`. `refnames` must be
7: d8651621968 < -: ----------- refs: clear errno return in refs_resolve_ref_unsafe()
8: 2a9ebe43dea < -: ----------- refs: explicitly propagate errno from refs_read_raw_ref
--
gitgitgadget
next prev parent reply other threads:[~2021-07-05 20:56 UTC|newest]
Thread overview: 148+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-29 15:32 [PATCH 0/8] refs: cleanup errno sideband ref related functions Han-Wen Nienhuys via GitGitGadget
2021-04-29 15:32 ` [PATCH 1/8] refs: remove EINVAL specification from the errno sideband in read_raw_ref_fn Han-Wen Nienhuys via GitGitGadget
2021-04-30 2:38 ` Junio C Hamano
2021-05-19 12:25 ` Han-Wen Nienhuys
2021-06-03 2:19 ` Jonathan Tan
2021-06-09 11:28 ` Han-Wen Nienhuys
2021-04-29 15:32 ` [PATCH 2/8] refs/files-backend: stop setting errno from lock_ref_oid_basic Han-Wen Nienhuys via GitGitGadget
2021-04-30 3:10 ` Junio C Hamano
2021-05-19 12:29 ` Han-Wen Nienhuys
2021-06-03 2:33 ` Jonathan Tan
2021-06-10 10:02 ` Han-Wen Nienhuys
2021-04-29 15:32 ` [PATCH 3/8] refs: make errno output explicit for read_raw_ref_fn Han-Wen Nienhuys via GitGitGadget
2021-04-30 3:34 ` Junio C Hamano
2021-04-30 6:02 ` Junio C Hamano
2021-05-19 12:33 ` Han-Wen Nienhuys
2021-06-03 2:37 ` Jonathan Tan
2021-06-10 10:05 ` Han-Wen Nienhuys
2021-04-29 15:32 ` [PATCH 4/8] refs: make errno output explicit for refs_resolve_ref_unsafe Han-Wen Nienhuys via GitGitGadget
2021-06-03 2:51 ` Jonathan Tan
2021-06-10 11:27 ` Han-Wen Nienhuys
2021-04-29 15:32 ` [PATCH 5/8] refs: add failure_errno to refs_read_raw_ref() signature Han-Wen Nienhuys via GitGitGadget
2021-04-29 15:32 ` [PATCH 6/8] refs: clear errno return in refs_resolve_ref_unsafe() Han-Wen Nienhuys via GitGitGadget
2021-06-03 2:53 ` Jonathan Tan
2021-06-10 11:45 ` Han-Wen Nienhuys
2021-04-29 15:32 ` [PATCH 7/8] refs: stop setting EINVAL and ELOOP in symref resolution Han-Wen Nienhuys via GitGitGadget
2021-06-03 2:55 ` Jonathan Tan
2021-06-10 11:58 ` Han-Wen Nienhuys
2021-04-29 15:32 ` [PATCH 8/8] refs: explicitly propagate errno from refs_read_raw_ref Han-Wen Nienhuys via GitGitGadget
2021-06-03 2:13 ` [PATCH 0/8] refs: cleanup errno sideband ref related functions Jonathan Tan
2021-06-09 11:29 ` Han-Wen Nienhuys
2021-06-10 12:57 ` [PATCH v2 " Han-Wen Nienhuys via GitGitGadget
2021-06-10 12:57 ` [PATCH v2 1/8] refs: remove EINVAL errno output from specification of read_raw_ref_fn Han-Wen Nienhuys via GitGitGadget
2021-06-10 12:57 ` [PATCH v2 2/8] refs/files-backend: stop setting errno from lock_ref_oid_basic Han-Wen Nienhuys via GitGitGadget
2021-07-01 11:13 ` Ævar Arnfjörð Bjarmason
2021-07-05 14:16 ` Han-Wen Nienhuys
2021-06-10 12:57 ` [PATCH v2 3/8] refs: make errno output explicit for read_raw_ref_fn Han-Wen Nienhuys via GitGitGadget
2021-07-01 11:34 ` Ævar Arnfjörð Bjarmason
2021-07-05 14:34 ` Han-Wen Nienhuys
2021-06-10 12:57 ` [PATCH v2 4/8] refs: make errno output explicit for refs_resolve_ref_unsafe Han-Wen Nienhuys via GitGitGadget
2021-07-01 11:56 ` Ævar Arnfjörð Bjarmason
2021-06-10 12:57 ` [PATCH v2 5/8] refs: use refs_resolve_ref_unsafe_with_errno() where needed Han-Wen Nienhuys via GitGitGadget
2021-07-01 11:58 ` Ævar Arnfjörð Bjarmason
2021-06-10 12:57 ` [PATCH v2 6/8] refs: add failure_errno to refs_read_raw_ref() signature Han-Wen Nienhuys via GitGitGadget
2021-07-01 12:06 ` Ævar Arnfjörð Bjarmason
2021-06-10 12:57 ` [PATCH v2 7/8] refs: clear errno return in refs_resolve_ref_unsafe() Han-Wen Nienhuys via GitGitGadget
2021-07-01 12:19 ` Ævar Arnfjörð Bjarmason
2021-06-10 12:57 ` [PATCH v2 8/8] refs: explicitly propagate errno from refs_read_raw_ref Han-Wen Nienhuys via GitGitGadget
2021-07-01 12:26 ` Ævar Arnfjörð Bjarmason
2021-07-05 16:09 ` Han-Wen Nienhuys
2021-07-05 19:08 ` Ævar Arnfjörð Bjarmason
2021-07-05 19:39 ` Han-Wen Nienhuys
2021-06-14 10:10 ` [PATCH v2 0/8] refs: cleanup errno sideband ref related functions Han-Wen Nienhuys
2021-07-05 20:56 ` Han-Wen Nienhuys via GitGitGadget [this message]
2021-07-05 20:56 ` [PATCH v3 1/5] refs: remove EINVAL errno output from specification of read_raw_ref_fn Han-Wen Nienhuys via GitGitGadget
2021-07-05 20:56 ` [PATCH v3 2/5] refs/files-backend: stop setting errno from lock_ref_oid_basic Han-Wen Nienhuys via GitGitGadget
2021-07-05 20:56 ` [PATCH v3 3/5] refs: make errno output explicit for read_raw_ref_fn Han-Wen Nienhuys via GitGitGadget
2021-07-05 20:56 ` [PATCH v3 4/5] refs: add failure_errno to refs_read_raw_ref() signature Han-Wen Nienhuys via GitGitGadget
2021-07-06 19:28 ` Junio C Hamano
2021-07-05 20:56 ` [PATCH v3 5/5] refs: make errno output explicit for refs_resolve_ref_unsafe Han-Wen Nienhuys via GitGitGadget
2021-07-06 0:38 ` [PATCH v3 0/5] refs: cleanup errno sideband ref related functions Ævar Arnfjörð Bjarmason
2021-07-06 9:53 ` Han-Wen Nienhuys
2021-07-06 14:27 ` Ævar Arnfjörð Bjarmason
2021-07-06 18:36 ` Han-Wen Nienhuys
2021-07-06 18:55 ` [PATCH v4 0/6] " Han-Wen Nienhuys via GitGitGadget
2021-07-06 18:55 ` [PATCH v4 1/6] refs: remove EINVAL errno output from specification of read_raw_ref_fn Han-Wen Nienhuys via GitGitGadget
2021-07-06 18:55 ` [PATCH v4 2/6] refs/files-backend: stop setting errno from lock_ref_oid_basic Han-Wen Nienhuys via GitGitGadget
2021-07-06 18:55 ` [PATCH v4 3/6] refs: make errno output explicit for read_raw_ref_fn Han-Wen Nienhuys via GitGitGadget
2021-07-06 18:55 ` [PATCH v4 4/6] refs: add failure_errno to refs_read_raw_ref() signature Han-Wen Nienhuys via GitGitGadget
2021-07-06 19:39 ` Junio C Hamano
2021-07-06 18:55 ` [PATCH v4 5/6] refs: explicitly return failure_errno from parse_loose_ref_contents Han-Wen Nienhuys via GitGitGadget
2021-07-06 19:37 ` Junio C Hamano
2021-07-07 8:20 ` Han-Wen Nienhuys
2021-07-06 18:55 ` [PATCH v4 6/6] refs: make errno output explicit for refs_resolve_ref_unsafe Han-Wen Nienhuys via GitGitGadget
2021-07-07 19:07 ` [PATCH v5 0/6] refs: cleanup errno sideband ref related functions Han-Wen Nienhuys via GitGitGadget
2021-07-07 19:07 ` [PATCH v5 1/6] refs: remove EINVAL errno output from specification of read_raw_ref_fn Han-Wen Nienhuys via GitGitGadget
2021-07-07 19:07 ` [PATCH v5 2/6] refs/files-backend: stop setting errno from lock_ref_oid_basic Han-Wen Nienhuys via GitGitGadget
2021-07-11 11:38 ` Ævar Arnfjörð Bjarmason
2021-07-13 8:00 ` Han-Wen Nienhuys
2021-07-07 19:07 ` [PATCH v5 3/6] refs: make errno output explicit for read_raw_ref_fn Han-Wen Nienhuys via GitGitGadget
2021-07-11 11:52 ` Ævar Arnfjörð Bjarmason
2021-07-07 19:07 ` [PATCH v5 4/6] refs: add failure_errno to refs_read_raw_ref() signature Han-Wen Nienhuys via GitGitGadget
2021-07-11 11:59 ` Ævar Arnfjörð Bjarmason
2021-07-13 8:02 ` Han-Wen Nienhuys
2021-07-07 19:07 ` [PATCH v5 5/6] refs: explicitly return failure_errno from parse_loose_ref_contents Han-Wen Nienhuys via GitGitGadget
2021-07-11 12:41 ` Ævar Arnfjörð Bjarmason
2021-07-07 19:07 ` [PATCH v5 6/6] refs: make errno output explicit for refs_resolve_ref_unsafe Han-Wen Nienhuys via GitGitGadget
2021-07-07 20:44 ` [PATCH v5 0/6] refs: cleanup errno sideband ref related functions Junio C Hamano
2021-07-11 16:30 ` [PATCH v6? 00/17] refs API: get rid of errno setting entirely Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 01/17] refs: remove EINVAL errno output from specification of read_raw_ref_fn Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 02/17] refs/files-backend: stop setting errno from lock_ref_oid_basic Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 03/17] refs: make errno output explicit for read_raw_ref_fn Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 04/17] refs: add failure_errno to refs_read_raw_ref() signature Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 05/17] refs: explicitly return failure_errno from parse_loose_ref_contents Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 06/17] refs: make errno output explicit for refs_resolve_ref_unsafe Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 07/17] refs: make errno ignoring explicit in lock_ref_oid_basic() Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 08/17] refs file-backend.c: stop setting "EBUSY" in verify_lock() Ævar Arnfjörð Bjarmason
2021-07-13 8:08 ` Han-Wen Nienhuys
2021-07-11 16:30 ` [PATCH v6? 09/17] refs file-backend.c: deal with errno directly " Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 10/17] refs API: remove refs_read_ref_full() wrapper Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 11/17] refs API: make resolve_gitlink_ref() not set errno Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 12/17] refs API: make refs_resolve_ref_unsafe() static Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 13/17] refs API: make refs_resolve_refdup() not set errno Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 14/17] refs API: make refs_ref_exists() " Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 15/17] refs API: make resolve_ref_unsafe() " Ævar Arnfjörð Bjarmason
2021-07-13 8:13 ` Han-Wen Nienhuys
2021-07-14 8:32 ` Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 16/17] refs API: make expand_ref() and repo_dwim_log() " Ævar Arnfjörð Bjarmason
2021-07-11 16:30 ` [PATCH v6? 17/17] refs API: don't leak "errno" in run_transaction_hook() Ævar Arnfjörð Bjarmason
2021-07-13 8:28 ` [PATCH v6? 00/17] refs API: get rid of errno setting entirely Han-Wen Nienhuys
2021-07-13 18:26 ` Ævar Arnfjörð Bjarmason
2021-07-14 8:38 ` Ævar Arnfjörð Bjarmason
2021-07-14 8:43 ` Han-Wen Nienhuys
2021-07-14 11:43 ` [PATCH v7 0/6] refs: cleanup errno sideband ref related functions Ævar Arnfjörð Bjarmason
2021-07-14 11:43 ` [PATCH v7 1/6] refs: remove EINVAL errno output from specification of read_raw_ref_fn Ævar Arnfjörð Bjarmason
2021-07-14 11:43 ` [PATCH v7 2/6] refs/files-backend: stop setting errno from lock_ref_oid_basic Ævar Arnfjörð Bjarmason
2021-07-14 11:43 ` [PATCH v7 3/6] refs: make errno output explicit for read_raw_ref_fn Ævar Arnfjörð Bjarmason
2021-07-14 11:43 ` [PATCH v7 4/6] refs: add failure_errno to refs_read_raw_ref() signature Ævar Arnfjörð Bjarmason
2021-07-14 11:43 ` [PATCH v7 5/6] refs: explicitly return failure_errno from parse_loose_ref_contents Ævar Arnfjörð Bjarmason
2021-07-14 11:43 ` [PATCH v7 6/6] refs: make errno output explicit for refs_resolve_ref_unsafe Ævar Arnfjörð Bjarmason
2021-07-16 14:22 ` [PATCH v8 0/7] refs: cleanup errno sideband ref related functions Ævar Arnfjörð Bjarmason
2021-07-16 14:22 ` [PATCH v8 1/7] refs file backend: move raceproof_create_file() here Ævar Arnfjörð Bjarmason
2021-07-16 14:22 ` [PATCH v8 2/7] refs: remove EINVAL errno output from specification of read_raw_ref_fn Ævar Arnfjörð Bjarmason
2021-07-16 14:22 ` [PATCH v8 3/7] refs/files-backend: stop setting errno from lock_ref_oid_basic Ævar Arnfjörð Bjarmason
2021-07-16 14:22 ` [PATCH v8 4/7] refs: make errno output explicit for read_raw_ref_fn Ævar Arnfjörð Bjarmason
2021-07-16 14:22 ` [PATCH v8 5/7] refs: add failure_errno to refs_read_raw_ref() signature Ævar Arnfjörð Bjarmason
2021-07-16 14:22 ` [PATCH v8 6/7] refs: explicitly return failure_errno from parse_loose_ref_contents Ævar Arnfjörð Bjarmason
2021-07-16 14:22 ` [PATCH v8 7/7] refs: make errno output explicit for refs_resolve_ref_unsafe Ævar Arnfjörð Bjarmason
2021-07-20 10:33 ` [PATCH v9 0/7] refs: cleanup errno sideband ref related functions Ævar Arnfjörð Bjarmason
2021-07-20 10:33 ` [PATCH v9 1/7] refs file backend: move raceproof_create_file() here Ævar Arnfjörð Bjarmason
2021-07-20 10:33 ` [PATCH v9 2/7] refs: remove EINVAL errno output from specification of read_raw_ref_fn Ævar Arnfjörð Bjarmason
2021-07-20 10:33 ` [PATCH v9 3/7] refs/files-backend: stop setting errno from lock_ref_oid_basic Ævar Arnfjörð Bjarmason
2021-07-20 10:33 ` [PATCH v9 4/7] refs: make errno output explicit for read_raw_ref_fn Ævar Arnfjörð Bjarmason
2021-08-16 13:00 ` Han-Wen Nienhuys
2021-07-20 10:33 ` [PATCH v9 5/7] refs: add failure_errno to refs_read_raw_ref() signature Ævar Arnfjörð Bjarmason
2021-07-20 10:33 ` [PATCH v9 6/7] refs: explicitly return failure_errno from parse_loose_ref_contents Ævar Arnfjörð Bjarmason
2021-08-13 20:54 ` Jonathan Tan
2021-07-20 10:33 ` [PATCH v9 7/7] refs: make errno output explicit for refs_resolve_ref_unsafe Ævar Arnfjörð Bjarmason
2021-07-26 23:49 ` [PATCH v9 0/7] refs: cleanup errno sideband ref related functions Ævar Arnfjörð Bjarmason
2021-07-27 0:18 ` Junio C Hamano
2021-08-23 11:52 ` [PATCH v10 0/8] " Ævar Arnfjörð Bjarmason
2021-08-23 11:52 ` [PATCH v10 1/8] refs file backend: move raceproof_create_file() here Ævar Arnfjörð Bjarmason
2021-08-23 11:52 ` [PATCH v10 2/8] refs: remove EINVAL errno output from specification of read_raw_ref_fn Ævar Arnfjörð Bjarmason
2021-08-23 11:52 ` [PATCH v10 3/8] refs/files-backend: stop setting errno from lock_ref_oid_basic Ævar Arnfjörð Bjarmason
2021-08-23 11:52 ` [PATCH v10 4/8] refs: make errno output explicit for read_raw_ref_fn Ævar Arnfjörð Bjarmason
2021-08-23 11:52 ` [PATCH v10 5/8] refs: add failure_errno to refs_read_raw_ref() signature Ævar Arnfjörð Bjarmason
2021-08-23 11:52 ` [PATCH v10 6/8] branch tests: test for errno propagating on failing read Ævar Arnfjörð Bjarmason
2021-08-23 11:52 ` [PATCH v10 7/8] refs: explicitly return failure_errno from parse_loose_ref_contents Ævar Arnfjörð Bjarmason
2021-08-23 11:52 ` [PATCH v10 8/8] refs: make errno output explicit for refs_resolve_ref_unsafe Ævar Arnfjörð Bjarmason
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.1012.v3.git.git.1625518566.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=hanwen@google.com \
--cc=hanwenn@gmail.com \
--cc=jonathantanmy@google.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).