Export rewrite_parents() for 'log -L'
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-log.c. Signed-off-by: Bo Yang <struggleyb.nku@gmail.com> Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
25ed3412f8
commit
c7edcae06e
13
revision.c
13
revision.c
@ -2173,12 +2173,6 @@ int prepare_revision_walk(struct rev_info *revs)
|
|||||||
return 0;
|
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)
|
static enum rewrite_result rewrite_one(struct rev_info *revs, struct commit **pp)
|
||||||
{
|
{
|
||||||
struct commit_list *cache = NULL;
|
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;
|
struct commit_list **pp = &commit->parents;
|
||||||
while (*pp) {
|
while (*pp) {
|
||||||
struct commit_list *parent = *pp;
|
struct commit_list *parent = *pp;
|
||||||
switch (rewrite_one(revs, &parent->item)) {
|
switch (rewrite_parent(revs, &parent->item)) {
|
||||||
case rewrite_one_ok:
|
case rewrite_one_ok:
|
||||||
break;
|
break;
|
||||||
case rewrite_one_noparents:
|
case rewrite_one_noparents:
|
||||||
@ -2371,7 +2366,7 @@ enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit)
|
|||||||
if (action == commit_show &&
|
if (action == commit_show &&
|
||||||
!revs->show_all &&
|
!revs->show_all &&
|
||||||
revs->prune && revs->dense && want_ancestry(revs)) {
|
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 commit_error;
|
||||||
}
|
}
|
||||||
return action;
|
return action;
|
||||||
|
10
revision.h
10
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 get_commit_action(struct rev_info *revs, struct commit *commit);
|
||||||
extern enum commit_action simplify_commit(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
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user