git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ronnie Sahlberg <sahlberg@google.com>
To: git@vger.kernel.org
Cc: Ronnie Sahlberg <sahlberg@google.com>
Subject: [PATCH v2 00/17] ref-transaction-rename
Date: Mon,  3 Nov 2014 11:02:02 -0800	[thread overview]
Message-ID: <1415041339-18450-1-git-send-email-sahlberg@google.com> (raw)

List,

Thsi series builds on the previous series : ref-transaction-reflog
as applied to next. This series has been sent to the list before
but is now rebased to current git next.

This series can also be found at :
https://github.com/rsahlberg/git/tree/ref-transactions-rename

This series converts ref rename to use a transaction. This addesses several
issues in the old implementation, such as colliding renames might overwrite
someone elses reflog, and it makes the rename atomic.

As part of the series we also move changes that cover multiple refs to happen
as an atomic transaction/rename to the pacekd refs file. This makes it possible
to have both the rename case (one deleted ref + one created ref) as well
as any operation that updates multiple refs to become one atomic rename()
applied to the packed refs file. Thus all such changes are now also atomic
to all external observers.

Version 2:
- Changed to not use potentially iterators to copy the reflog entries one
  by one. Instead adding two new functions. One to read an existing reflog
  as one big blob, and a second function to, in a transaction, write a new
  complete reflog from said blob.
  The idea is that each future reflog backend will provide optimized
  versions for these "read whole reflog" "write whole reflog" functions.

Ronnie Sahlberg (17):
  refs.c: allow passing raw git_committer_info as email to
    _update_reflog
  refs.c: return error instead of dying when locking fails during
    transaction
  refs.c: use packed refs when deleting refs during a transaction
  refs.c: use a stringlist for repack_without_refs
  refs.c: add transaction support for replacing a reflog
  refs.c: add new function copy_reflog_into_strbuf
  refs.c: update rename_ref to use a transaction
  refs.c: rollback the lockfile before we die() in repack_without_refs
  refs.c: move reflog updates into its own function
  refs.c: write updates to packed refs when a transaction has more than
    one ref
  remote.c: use a transaction for deleting refs
  refs.c: make repack_without_refs static
  refs.c: make the *_packed_refs functions static
  refs.c: replace the onerr argument in update_ref with a strbuf err
  refs.c: make add_packed_ref return an error instead of calling die
  refs.c: make lock_packed_refs take an err argument
  refs.c: add an err argument to pack_refs

 builtin/checkout.c    |   7 +-
 builtin/clone.c       |  36 ++-
 builtin/merge.c       |  20 +-
 builtin/notes.c       |  24 +-
 builtin/pack-refs.c   |   8 +-
 builtin/reflog.c      |  19 +-
 builtin/remote.c      |  69 +++---
 builtin/reset.c       |  12 +-
 builtin/update-ref.c  |   7 +-
 notes-cache.c         |   2 +-
 notes-utils.c         |   5 +-
 refs.c                | 618 ++++++++++++++++++++++++++++++--------------------
 refs.h                |  87 ++++---
 t/t3200-branch.sh     |   7 -
 t/t5516-fetch-push.sh |   2 +-
 transport-helper.c    |   7 +-
 transport.c           |   9 +-
 17 files changed, 562 insertions(+), 377 deletions(-)

-- 
2.1.0.rc2.206.gedb03e5

             reply	other threads:[~2014-11-03 19:02 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-03 19:02 Ronnie Sahlberg [this message]
2014-11-03 19:02 ` [PATCH v2 01/17] refs.c: allow passing raw git_committer_info as email to _update_reflog Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 02/17] refs.c: return error instead of dying when locking fails during transaction Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 03/17] refs.c: use packed refs when deleting refs during a transaction Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 04/17] refs.c: use a stringlist for repack_without_refs Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 05/17] refs.c: add transaction support for replacing a reflog Ronnie Sahlberg
2014-11-03 21:06   ` Junio C Hamano
2014-11-03 19:02 ` [PATCH v2 06/17] refs.c: add new function copy_reflog_into_strbuf Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 07/17] refs.c: update rename_ref to use a transaction Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 08/17] refs.c: rollback the lockfile before we die() in repack_without_refs Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 09/17] refs.c: move reflog updates into its own function Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 10/17] refs.c: write updates to packed refs when a transaction has more than one ref Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 11/17] remote.c: use a transaction for deleting refs Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 12/17] refs.c: make repack_without_refs static Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 13/17] refs.c: make the *_packed_refs functions static Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 14/17] refs.c: replace the onerr argument in update_ref with a strbuf err Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 15/17] refs.c: make add_packed_ref return an error instead of calling die Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 16/17] refs.c: make lock_packed_refs take an err argument Ronnie Sahlberg
2014-11-03 19:02 ` [PATCH v2 17/17] refs.c: add an err argument to pack_refs Ronnie Sahlberg

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=1415041339-18450-1-git-send-email-sahlberg@google.com \
    --to=sahlberg@google.com \
    --cc=git@vger.kernel.org \
    /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 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).