Ronnie Sahlberg
2014-10-21 20:36:45 UTC
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.
Ronnie Sahlberg (15):
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: 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 | 568 +++++++++++++++++++++++++++++---------------------
refs.h | 71 +++----
t/t3200-branch.sh | 7 -
t/t5516-fetch-push.sh | 2 +-
transport-helper.c | 7 +-
transport.c | 9 +-
17 files changed, 500 insertions(+), 373 deletions(-)
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.
Ronnie Sahlberg (15):
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: 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 | 568 +++++++++++++++++++++++++++++---------------------
refs.h | 71 +++----
t/t3200-branch.sh | 7 -
t/t5516-fetch-push.sh | 2 +-
transport-helper.c | 7 +-
transport.c | 9 +-
17 files changed, 500 insertions(+), 373 deletions(-)
--
2.1.0.rc2.206.gedb03e5
2.1.0.rc2.206.gedb03e5