git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 00/39] Lockfile correctness and refactoring
@ 2014-09-26 10:08 Michael Haggerty
  2014-09-26 10:08 ` [PATCH v6 01/39] unable_to_lock_die(): rename function from unable_to_lock_index_die() Michael Haggerty
                   ` (40 more replies)
  0 siblings, 41 replies; 55+ messages in thread
From: Michael Haggerty @ 2014-09-26 10:08 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Sixt, Torsten Bögershausen, Jeff King,
	Ronnie Sahlberg, Jonathan Nieder, git, Michael Haggerty

Next iteration of my lockfile fixes and refactoring. Thanks to
Jonathan Nieder and Torsten Bögershausen for their comments about v5.

I believe that this series addresses all of the comments from v1 [1],
v2 [2], v3 [3], v4 [4], and v5 [5].

Changes since v4:

* Revise API documentation.

* Split out a separate header file for the lockfile API: lockfile.h.

* Change close_lock_file() to rollback on errors and make it into a
  NOOP if the file is already closed.

* Don't set lk->on_list until the lock_file object is completely on
  the lock_file_list.

* Delete some information from the docstring in lockfile.c (now
  lockfile.h) that is redundant with the API docs in api-lockfile.txt.

* Remove the accidental extra call of git_config_clear() in
  git_config_set_multivar_in_file() when commit_lock_file() fails.

* Adjust some comments, error messages, and commit messages.

* Rebase to current master.

[1] http://thread.gmane.org/gmane.comp.version-control.git/245609
[2] http://thread.gmane.org/gmane.comp.version-control.git/245801
[3] http://thread.gmane.org/gmane.comp.version-control.git/246222
[4] http://thread.gmane.org/gmane.comp.version-control.git/256564
[5] http://thread.gmane.org/gmane.comp.version-control.git/257159

Michael Haggerty (39):
  unable_to_lock_die(): rename function from unable_to_lock_index_die()
  api-lockfile: revise and expand the documentation
  close_lock_file(): exit (successfully) if file is already closed
  rollback_lock_file(): do not clear filename redundantly
  rollback_lock_file(): exit early if lock is not active
  rollback_lock_file(): set fd to -1
  lockfile: unlock file if lockfile permissions cannot be adjusted
  hold_lock_file_for_append(): release lock on errors
  lock_file(): always initialize and register lock_file object
  lockfile.c: document the various states of lock_file objects
  cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
  delete_ref_loose(): don't muck around in the lock_file's filename
  prepare_index(): declare return value to be (const char *)
  write_packed_entry_fn(): convert cb_data into a (const int *)
  lock_file(): exit early if lockfile cannot be opened
  remove_lock_file(): call rollback_lock_file()
  commit_lock_file(): inline temporary variable
  commit_lock_file(): die() if called for unlocked lockfile object
  close_lock_file(): if close fails, roll back
  commit_lock_file(): rollback lock file on failure to rename
  api-lockfile: document edge cases
  dump_marks(): remove a redundant call to rollback_lock_file()
  git_config_set_multivar_in_file(): avoid call to rollback_lock_file()
  lockfile: avoid transitory invalid states
  struct lock_file: declare some fields volatile
  try_merge_strategy(): remove redundant lock_file allocation
  try_merge_strategy(): use a statically-allocated lock_file object
  commit_lock_file(): use a strbuf to manage temporary space
  Change lock_file::filename into a strbuf
  resolve_symlink(): use a strbuf for internal scratch space
  resolve_symlink(): take a strbuf parameter
  trim_last_path_component(): replace last_path_elm()
  Extract a function commit_lock_file_to()
  Rename LOCK_NODEREF to LOCK_NO_DEREF
  lockfile.c: rename static functions
  get_locked_file_path(): new function
  hold_lock_file_for_append(): restore errno before returning
  Move read_index() definition to read-cache.c
  lockfile.h: extract new header file for the functions in lockfile.c

 Documentation/technical/api-lockfile.txt | 220 ++++++++++++++++++------
 builtin/add.c                            |   1 +
 builtin/apply.c                          |   1 +
 builtin/checkout-index.c                 |   2 +-
 builtin/checkout.c                       |   2 +-
 builtin/clone.c                          |   1 +
 builtin/commit.c                         |  17 +-
 builtin/describe.c                       |   1 +
 builtin/diff.c                           |   1 +
 builtin/gc.c                             |   2 +-
 builtin/merge.c                          |  16 +-
 builtin/mv.c                             |   2 +-
 builtin/read-tree.c                      |   1 +
 builtin/receive-pack.c                   |   1 +
 builtin/reflog.c                         |   4 +-
 builtin/reset.c                          |   1 +
 builtin/rm.c                             |   2 +-
 builtin/update-index.c                   |   3 +-
 bundle.c                                 |   1 +
 cache-tree.c                             |   1 +
 cache.h                                  |  20 +--
 config.c                                 |  16 +-
 credential-store.c                       |   1 +
 fast-import.c                            |   5 +-
 fetch-pack.c                             |   1 +
 lockfile.c                               | 284 +++++++++++++++++--------------
 lockfile.h                               |  84 +++++++++
 merge-recursive.c                        |   1 +
 merge.c                                  |   1 +
 read-cache.c                             |  21 ++-
 refs.c                                   |  30 ++--
 rerere.c                                 |   1 +
 sequencer.c                              |   1 +
 sha1_file.c                              |   1 +
 shallow.c                                |   7 +-
 test-scrap-cache-tree.c                  |   1 +
 36 files changed, 492 insertions(+), 263 deletions(-)
 create mode 100644 lockfile.h

-- 
2.1.0

^ permalink raw reply	[flat|nested] 55+ messages in thread

end of thread, other threads:[~2014-10-01  8:12 UTC | newest]

Thread overview: 55+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-26 10:08 [PATCH v6 00/39] Lockfile correctness and refactoring Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 01/39] unable_to_lock_die(): rename function from unable_to_lock_index_die() Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 02/39] api-lockfile: revise and expand the documentation Michael Haggerty
2014-09-26 18:33   ` Junio C Hamano
2014-09-30 10:53     ` Michael Haggerty
2014-09-30 17:39       ` Junio C Hamano
2014-10-01  7:37         ` Michael Haggerty
2014-09-26 20:40   ` Junio C Hamano
2014-09-30 13:41     ` Michael Haggerty
2014-09-30 16:15       ` Jeff King
2014-09-30 17:47         ` Junio C Hamano
2014-10-01  8:11           ` Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 03/39] close_lock_file(): exit (successfully) if file is already closed Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 04/39] rollback_lock_file(): do not clear filename redundantly Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 05/39] rollback_lock_file(): exit early if lock is not active Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 06/39] rollback_lock_file(): set fd to -1 Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 07/39] lockfile: unlock file if lockfile permissions cannot be adjusted Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 08/39] hold_lock_file_for_append(): release lock on errors Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 09/39] lock_file(): always initialize and register lock_file object Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 10/39] lockfile.c: document the various states of lock_file objects Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 11/39] cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 12/39] delete_ref_loose(): don't muck around in the lock_file's filename Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 13/39] prepare_index(): declare return value to be (const char *) Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 14/39] write_packed_entry_fn(): convert cb_data into a (const int *) Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 15/39] lock_file(): exit early if lockfile cannot be opened Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 16/39] remove_lock_file(): call rollback_lock_file() Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 17/39] commit_lock_file(): inline temporary variable Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 18/39] commit_lock_file(): die() if called for unlocked lockfile object Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 19/39] close_lock_file(): if close fails, roll back Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 20/39] commit_lock_file(): rollback lock file on failure to rename Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 21/39] api-lockfile: document edge cases Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 22/39] dump_marks(): remove a redundant call to rollback_lock_file() Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 23/39] git_config_set_multivar_in_file(): avoid " Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 24/39] lockfile: avoid transitory invalid states Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 25/39] struct lock_file: declare some fields volatile Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 26/39] try_merge_strategy(): remove redundant lock_file allocation Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 27/39] try_merge_strategy(): use a statically-allocated lock_file object Michael Haggerty
2014-09-26 19:00   ` Junio C Hamano
2014-09-30 14:04     ` Michael Haggerty
2014-09-30 18:08       ` Junio C Hamano
2014-09-26 10:08 ` [PATCH v6 28/39] commit_lock_file(): use a strbuf to manage temporary space Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 29/39] Change lock_file::filename into a strbuf Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 30/39] resolve_symlink(): use a strbuf for internal scratch space Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 31/39] resolve_symlink(): take a strbuf parameter Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 32/39] trim_last_path_component(): replace last_path_elm() Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 33/39] Extract a function commit_lock_file_to() Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 34/39] Rename LOCK_NODEREF to LOCK_NO_DEREF Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 35/39] lockfile.c: rename static functions Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 36/39] get_locked_file_path(): new function Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 37/39] hold_lock_file_for_append(): restore errno before returning Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 38/39] Move read_index() definition to read-cache.c Michael Haggerty
2014-09-26 10:08 ` [PATCH v6 39/39] lockfile.h: extract new header file for the functions in lockfile.c Michael Haggerty
2014-09-26 16:31 ` [PATCH v6 00/39] Lockfile correctness and refactoring Junio C Hamano
2014-09-30  9:55   ` Michael Haggerty
2014-09-26 19:10 ` Junio C Hamano

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 NNTP newsgroup(s).