On Wed, Jan 31, 2018 at 12:25 AM, Elijah Newren <newren@xxxxxxxxx> wrote: > This commit hooks together all the directory rename logic by making the > necessary changes to the rename struct, it's dst_entry, and the > diff_filepair under consideration. > > Signed-off-by: Elijah Newren <newren@xxxxxxxxx> > --- > merge-recursive.c | 187 +++++++++++++++++++++++++++++++++++- > t/t6043-merge-rename-directories.sh | 50 +++++----- > 2 files changed, 211 insertions(+), 26 deletions(-) > > diff --git a/merge-recursive.c b/merge-recursive.c > index 38dc0eefaf..7c78dc2dc1 100644 > --- a/merge-recursive.c > +++ b/merge-recursive.c > @@ -641,6 +643,27 @@ static int update_stages(struct merge_options *opt, const char *path, > return 0; > } > > +static int update_stages_for_stage_data(struct merge_options *opt, > + const char *path, > + const struct stage_data *stage_data) > +{ > + struct diff_filespec o, a, b; > + > + o.mode = stage_data->stages[1].mode; > + oidcpy(&o.oid, &stage_data->stages[1].oid); > + > + a.mode = stage_data->stages[2].mode; > + oidcpy(&a.oid, &stage_data->stages[2].oid); > + > + b.mode = stage_data->stages[3].mode; > + oidcpy(&b.oid, &stage_data->stages[3].oid); > + > + return update_stages(opt, path, > + is_null_sha1(o.oid.hash) ? NULL : &o, > + is_null_sha1(a.oid.hash) ? NULL : &a, > + is_null_sha1(b.oid.hash) ? NULL : &b); Please use is_null_oid(&o.oid) etc. instead of is_null_sha1().