On Sat, Jun 13, 2020 at 11:38 AM Christian Couder <christian.couder@xxxxxxxxx> wrote: > > On Tue, May 5, 2020 at 12:56 PM Alban Gruin <alban.gruin@xxxxxxxxx> 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. > 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.