Thomas Rast <trast@xxxxxxxxxxxxxxx> writes: > From: Bo Yang <struggleyb.nku@xxxxxxxxx> > > The function rewrite_one is used to rewrite a single > parent of the current commit, and is used by rewrite_parents > to rewrite all the parents. > > Decouple the dependence between them by making rewrite_one > a callback function that is passed to rewrite_parents. Then > export rewrite_parents for reuse by the line history browser. > > We will use this function in line.c. Did you mean log-line.c or line-log.c or something? > Signed-off-by: Bo Yang <struggleyb.nku@xxxxxxxxx> > Signed-off-by: Thomas Rast <trast@xxxxxxxxxxxxxxx> > --- > revision.c | 13 ++++--------- > revision.h | 10 ++++++++++ > 2 files changed, 14 insertions(+), 9 deletions(-) > > diff --git a/revision.c b/revision.c > index ef60205..46319d5 100644 > --- a/revision.c > +++ b/revision.c > @@ -2173,12 +2173,6 @@ int prepare_revision_walk(struct rev_info *revs) > return 0; > } > > -enum rewrite_result { > - rewrite_one_ok, > - rewrite_one_noparents, > - rewrite_one_error > -}; > - > static enum rewrite_result rewrite_one(struct rev_info *revs, struct commit **pp) > { > struct commit_list *cache = NULL; > @@ -2200,12 +2194,13 @@ static enum rewrite_result rewrite_one(struct rev_info *revs, struct commit **pp > } > } > > -static int rewrite_parents(struct rev_info *revs, struct commit *commit) > +int rewrite_parents(struct rev_info *revs, struct commit *commit, > + rewrite_parent_fn_t rewrite_parent) > { > struct commit_list **pp = &commit->parents; > while (*pp) { > struct commit_list *parent = *pp; > - switch (rewrite_one(revs, &parent->item)) { > + switch (rewrite_parent(revs, &parent->item)) { > case rewrite_one_ok: > break; > case rewrite_one_noparents: > @@ -2371,7 +2366,7 @@ enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit) > if (action == commit_show && > !revs->show_all && > revs->prune && revs->dense && want_ancestry(revs)) { > - if (rewrite_parents(revs, commit) < 0) > + if (rewrite_parents(revs, commit, rewrite_one) < 0) > return commit_error; > } > return action; > diff --git a/revision.h b/revision.h > index 5da09ee..640110d 100644 > --- a/revision.h > +++ b/revision.h > @@ -241,4 +241,14 @@ enum commit_action { > extern enum commit_action get_commit_action(struct rev_info *revs, struct commit *commit); > extern enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit); > > +enum rewrite_result { > + rewrite_one_ok, > + rewrite_one_noparents, > + rewrite_one_error > +}; > + > +typedef enum rewrite_result (*rewrite_parent_fn_t)(struct rev_info *revs, struct commit **pp); > + > +extern int rewrite_parents(struct rev_info *revs, struct commit *commit, > + rewrite_parent_fn_t rewrite_parent); > #endif -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html