Re: [RFC PATCH v1 3/6] stash: remove the second index in stash_patch()
- From
Christian Couder <christian.couder@gmail.com>
- Date
- Jun 13, 2020, 10:04 UTC
- Message-ID
- <CAP8UFD31FdBgPy3p4Riryn4BNuZJxH0r4qDOu3hDcrJ9cSJeyg@mail.gmail.com>
- In-Reply-To
- <CAP8UFD26Df266Q9QnnQjM+dvKWmi8Rgj_J+BgsNrOyttxqVpQQ@mail.gmail.com>
On Sat, Jun 13, 2020 at 11:38 AM Christian Couder <christian.couder@gmail.com> wrote:
Show 35 quoted lines
>
> On Tue, May 5, 2020 at 12:56 PM Alban Gruin <alban.gruin@gmail.com> wrote:
> >
> > This removes the second index used in stash_patch().
> >
> > This function starts by resetting the index (which is set at `i_tree')
> > to HEAD, which has been stored in `b_commit' by do_create_stash(), and
> > the call to `read-tree' is replaced by reset_tree(). The index is
> > discarded after run_add_interactive(), but not `diff-tree' as this
> > command should not change it.
> >
> > Since the index has been changed, and subsequent code might be sensitive
> > to this, it is reset to `i_tree' at the end of the function.
>
> [...]
>
> > /* State of the working tree. */
> > - if (write_index_as_tree(&info->w_tree, &istate, stash_index_path.buf, 0,
> > - NULL)) {
> > - ret = -1;
> > - goto done;
> > - }
> > + discard_cache();
> > + if (write_cache_as_tree(&info->w_tree, 0, NULL))
> > + return -1;
>
> In the previous patch you use the following:
>
> + if (write_cache_as_tree(&info->w_tree, 0, NULL) ||
> + reset_tree(&info->i_tree, 0, 1))
>
> Here the reset_tree(&info->i_tree, 0, 1) call is in the "done:" part
> of the code. Is there a reason for that? Can't
> reset_tree(&info->i_tree, 0, 1) be tried here before returning an
> error? Or was the previous patch wrong?Sorry I think I misunderstood the code in the previous patch. It actually doesn't try reset_tree(&info->i_tree, 0, 1) when write_cache_as_tree(&info->w_tree, 0, NULL) fails.
Show 5 quoted lines
> I guess the reason why the > reset_tree(&info->i_tree, 0, 1) call here is in the "done:" part of > the call is because it should be after the diff tree command is > launched. I see that the commit message tries to explain this a bit, > but it is still not very clear to me.