From: Michael Haggerty <mhagger@alum.mit.edu>
To: Junio C Hamano <gitster@pobox.com>,
David Turner <dturner@twopensource.com>
Cc: "Jeff King" <peff@peff.net>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Ramsay Jones" <ramsay@ramsayjones.plus.com>,
git@vger.kernel.org, "Michael Haggerty" <mhagger@alum.mit.edu>
Subject: [PATCH v2 00/33] Yet more preparation for reference backends
Date: Fri, 6 May 2016 18:13:41 +0200 [thread overview]
Message-ID: <cover.1462550456.git.mhagger@alum.mit.edu> (raw)
Thanks to David, Junio, and Peff for their comments on v1 of this
patch series [1]. I think I have addressed all of the points that were
brought up. Plus I fixed a pre-existing bug that I noticed myself
while adding some more tests; see the first bullet point below for
more information.
Changes between v1 and v2:
* Prefixed the patch series with three new patches that demonstrate
and fix some bugs in reference resolution that I noticed while
inspecting this series:
* "t1404: demonstrate a bug resolving references" -- this
demonstrates a bug that has existed since at least 2.5.0.
* "read_raw_ref(): don't get confused by an empty directory"
* "commit_ref(): if there is an empty dir in the way, delete it"
* Added a patch "read_raw_ref(): move docstring to header file".
* "ref_transaction_create(): disallow recursive pruning": Add a
comment that `REF_ISPRUNING` must only be used with `REF_NODEREF`.
* "refs: don't dereference on rename": explain why we can't pass an
`old_sha1` argument to `delete_ref()`. Inline `resolve_flags`
constant to make the code more transparent.
* "add_update(): initialize the whole ref_update": move some more
checks from `ref_transaction_update()` to `add_update()`.
* "refs: resolve symbolic refs first":
* Remove unused `deleting` parameter from `lock_raw_ref()`
* Fix a comment, add another.
* "lock_ref_sha1_basic(): only handle REF_NODEREF mode": initialize
`ref_name` only once, as its value can be reused.
This patch series is also available from my GitHub repo [2] as branch
"split-under-lock".
[1] http://thread.gmane.org/gmane.comp.version-control.git/292772
[2] https://github.com/mhagger/git
David Turner (2):
refs: allow log-only updates
refs: don't dereference on rename
Michael Haggerty (31):
t1404: demonstrate a bug resolving references
commit_ref(): if there is an empty dir in the way, delete it
read_raw_ref(): don't get confused by an empty directory
safe_create_leading_directories(): improve docstring
remove_dir_recursively(): add docstring
refname_is_safe(): use skip_prefix()
refname_is_safe(): don't allow the empty string
refname_is_safe(): insist that the refname already be normalized
commit_ref_update(): write error message to *err, not stderr
rename_ref(): remove unneeded local variable
ref_transaction_commit(): remove local variable n
read_raw_ref(): rename flags argument to type
read_raw_ref(): clear *type at start of function
read_raw_ref(): rename symref argument to referent
read_raw_ref(): improve docstring
read_raw_ref(): move docstring to header file
lock_ref_sha1_basic(): remove unneeded local variable
refs: make error messages more consistent
ref_transaction_create(): disallow recursive pruning
ref_transaction_commit(): correctly report close_ref() failure
delete_branches(): use resolve_refdup()
verify_refname_available(): adjust constness in declaration
add_update(): initialize the whole ref_update
lock_ref_for_update(): new function
unlock_ref(): move definition higher in the file
ref_transaction_update(): check refname_is_safe() at a minimum
refs: resolve symbolic refs first
lock_ref_for_update(): don't re-read non-symbolic references
lock_ref_for_update(): don't resolve symrefs
commit_ref_update(): remove the flags parameter
lock_ref_sha1_basic(): only handle REF_NODEREF mode
builtin/branch.c | 19 +-
cache.h | 5 +
dir.h | 23 +
refs.c | 96 ++--
refs/files-backend.c | 909 ++++++++++++++++++++++++++++---------
refs/refs-internal.h | 95 +++-
t/t1400-update-ref.sh | 41 +-
t/t1404-update-ref-df-conflicts.sh | 76 +++-
t/t1430-bad-ref-name.sh | 2 +-
t/t3200-branch.sh | 9 +
10 files changed, 1013 insertions(+), 262 deletions(-)
--
2.8.1
next reply other threads:[~2016-05-06 16:14 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-06 16:13 Michael Haggerty [this message]
2016-05-06 16:13 ` [PATCH v2 01/33] t1404: demonstrate a bug resolving references Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 02/33] commit_ref(): if there is an empty dir in the way, delete it Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 03/33] read_raw_ref(): don't get confused by an empty directory Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 04/33] safe_create_leading_directories(): improve docstring Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 05/33] remove_dir_recursively(): add docstring Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 06/33] refname_is_safe(): use skip_prefix() Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 07/33] refname_is_safe(): don't allow the empty string Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 08/33] refname_is_safe(): insist that the refname already be normalized Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 09/33] commit_ref_update(): write error message to *err, not stderr Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 10/33] rename_ref(): remove unneeded local variable Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 11/33] ref_transaction_commit(): remove local variable n Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 12/33] read_raw_ref(): rename flags argument to type Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 13/33] read_raw_ref(): clear *type at start of function Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 14/33] read_raw_ref(): rename symref argument to referent Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 15/33] read_raw_ref(): improve docstring Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 16/33] read_raw_ref(): move docstring to header file Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 17/33] lock_ref_sha1_basic(): remove unneeded local variable Michael Haggerty
2016-05-06 16:13 ` [PATCH v2 18/33] refs: make error messages more consistent Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 19/33] ref_transaction_create(): disallow recursive pruning Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 20/33] ref_transaction_commit(): correctly report close_ref() failure Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 21/33] delete_branches(): use resolve_refdup() Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 22/33] refs: allow log-only updates Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 23/33] refs: don't dereference on rename Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 24/33] verify_refname_available(): adjust constness in declaration Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 25/33] add_update(): initialize the whole ref_update Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 26/33] lock_ref_for_update(): new function Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 27/33] unlock_ref(): move definition higher in the file Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 28/33] ref_transaction_update(): check refname_is_safe() at a minimum Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 29/33] refs: resolve symbolic refs first Michael Haggerty
2016-05-12 7:45 ` Jeff King
2016-05-12 8:25 ` Jeff King
2016-05-13 12:33 ` Michael Haggerty
2016-05-13 12:35 ` [PATCH v3 " Michael Haggerty
2016-05-13 12:58 ` Jeff King
2016-05-13 12:51 ` [PATCH v2 " Jeff King
2016-05-14 9:02 ` Torsten Bögershausen
2016-05-06 16:14 ` [PATCH v2 30/33] lock_ref_for_update(): don't re-read non-symbolic references Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 31/33] lock_ref_for_update(): don't resolve symrefs Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 32/33] commit_ref_update(): remove the flags parameter Michael Haggerty
2016-05-06 16:14 ` [PATCH v2 33/33] lock_ref_sha1_basic(): only handle REF_NODEREF mode Michael Haggerty
2016-05-09 20:12 ` [PATCH v2 00/33] Yet more preparation for reference backends David Turner
2016-05-09 21:05 ` Junio C Hamano
2016-05-09 21:50 ` Michael Haggerty
2016-05-09 22:04 ` Junio C Hamano
2016-05-12 7:55 ` Jeff King
2016-05-12 16:10 ` Junio C Hamano
2016-05-10 21:32 ` Junio C Hamano
2016-06-10 12:50 ` Michael Haggerty
2016-06-10 15:43 ` Junio C Hamano
2016-06-13 9:55 ` [ADDENDUM v4] " Michael Haggerty
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=cover.1462550456.git.mhagger@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=dturner@twopensource.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=ramsay@ramsayjones.plus.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.