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, 09:38 UTC
- Message-ID
- <CAP8UFD26Df266Q9QnnQjM+dvKWmi8Rgj_J+BgsNrOyttxqVpQQ@mail.gmail.com>
- In-Reply-To
- <20200505104849.13602-4-alban.gruin@gmail.com>
On Tue, May 5, 2020 at 12:56 PM Alban Gruin <alban.gruin@gmail.com> wrote:
Show 11 quoted lines
> > 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.
[...]
Show 9 quoted lines
> /* 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? 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.