Ronnie Sahlberg wrote:

> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -272,23 +272,31 @@ static int error_dirty_index(struct replay_opts *opts)
>  static int fast_forward_to(const unsigned char *to, const unsigned char 
> *from,
>                       int unborn, struct replay_opts *opts)
>  {
> -     struct ref_lock *ref_lock;
> +     struct ref_transaction *transaction;
>       struct strbuf sb = STRBUF_INIT;
> -     int ret;
> +     struct strbuf err = STRBUF_INIT;
>  
>       read_cache();
>       if (checkout_fast_forward(from, to, 1))
>               exit(1); /* the callee should have complained already */
> -     ref_lock = lock_any_ref_for_update("HEAD", unborn ? null_sha1 : from,
> -                                        0, NULL);
> -     if (!ref_lock)
> -             return error(_("Failed to lock HEAD during fast_forward_to"));
>  
>       strbuf_addf(&sb, "%s: fast-forward", action_name(opts));
> -     ret = write_ref_sha1(ref_lock, to, sb.buf);
> +
> +     transaction = ref_transaction_begin();
> +     if ((!transaction ||
> +         ref_transaction_update(transaction, "HEAD", to, from,
> +                                0, !unborn)) ||

These parentheses make it harder to parse.  Other patches in this
series do

        if (!transaction ||
            ref_transaction_update(...) ||
            ref_transaction_commit(...)) {

so this could do

        if (!transaction ||
            ref_transaction_update(...) ||
            (ref_transaction_commit(...) && !(transaction = NULL))) {

> +         (ref_transaction_commit(transaction, sb.buf, &err) &&
> +          !(transaction = NULL))) {
> +             ref_transaction_rollback(transaction);

Earlier patches in the series didn't bother rolling back.  Should they
have?

Thanks,
Jonathan
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to