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

Yet another iteration of my lockfile fixes and refactoring. Thanks to
Junio for his comments about v6.

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

Changes since v6:

* Rebased on current master to resolve conflicts with
  jk/write-packed-refs-via-stdio. Changes made in that branch removed
  the need for the following patch from v6:

      [13/39] prepare_index(): declare return value to be (const char *)

* More improvements to the API documentation.

I will separately submit patches to support stdio-based access to
lockfiles.

Michael

[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
[6] http://thread.gmane.org/gmane.comp.version-control.git/257504

Michael Haggerty (38):
  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 *)
  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 | 242 ++++++++++++++++++++------
 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                                   |  23 +--
 rerere.c                                 |   1 +
 sequencer.c                              |   1 +
 sha1_file.c                              |   1 +
 shallow.c                                |   7 +-
 test-scrap-cache-tree.c                  |   1 +
 36 files changed, 510 insertions(+), 260 deletions(-)
 create mode 100644 lockfile.h

-- 
2.1.0

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

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

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