Skip to content

Commit

Permalink
Splitting rev-list into revisions lib, end of beginning.
Browse files Browse the repository at this point in the history
This makes the rewrite easier to validate in that revision flag
parsing and warlking part are now all in rev_info structure.

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Linus Torvalds authored and Junio C Hamano committed Feb 27, 2006
1 parent d9cfb96 commit d9a8368
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 22 deletions.
25 changes: 5 additions & 20 deletions rev-list.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ static const char rev_list_usage[] =

struct rev_info revs;

static int unpacked = 0;
static int bisect_list = 0;
static int verbose_header = 0;
static int abbrev = DEFAULT_ABBREV;
Expand Down Expand Up @@ -572,7 +571,7 @@ static struct commit_list *limit_list(struct commit_list *list)

if (revs.max_age != -1 && (commit->date < revs.max_age))
obj->flags |= UNINTERESTING;
if (unpacked && has_sha1_pack(obj->sha1))
if (revs.unpacked && has_sha1_pack(obj->sha1))
obj->flags |= UNINTERESTING;
add_parents_to_list(commit, &list);
if (obj->flags & UNINTERESTING) {
Expand All @@ -595,7 +594,7 @@ static struct commit_list *limit_list(struct commit_list *list)
int main(int argc, const char **argv)
{
struct commit_list *list;
int i, limited = 0;
int i;

argc = setup_revisions(argc, argv, &revs);

Expand Down Expand Up @@ -655,11 +654,6 @@ int main(int argc, const char **argv)
bisect_list = 1;
continue;
}
if (!strcmp(arg, "--unpacked")) {
unpacked = 1;
limited = 1;
continue;
}
if (!strcmp(arg, "--merge-order")) {
merge_order = 1;
continue;
Expand All @@ -673,34 +667,25 @@ int main(int argc, const char **argv)
}

list = revs.commits;
if (list)
limited = 1;

if (revs.topo_order)
limited = 1;

if (!list &&
(!(revs.tag_objects||revs.tree_objects||revs.blob_objects) && !revs.pending_objects))
usage(rev_list_usage);

if (revs.paths) {
limited = 1;
if (revs.paths)
diff_tree_setup_paths(revs.paths);
}
if (revs.max_age != -1 || revs.min_age != -1)
limited = 1;

save_commit_buffer = verbose_header;
track_object_refs = 0;

if (!merge_order) {
sort_by_date(&list);
if (list && !limited && revs.max_count == 1 &&
if (list && !revs.limited && revs.max_count == 1 &&
!revs.tag_objects && !revs.tree_objects && !revs.blob_objects) {
show_commit(list->item);
return 0;
}
if (limited)
if (revs.limited)
list = limit_list(list);
if (revs.topo_order)
sort_in_topological_order(&list, revs.lifo);
Expand Down
15 changes: 14 additions & 1 deletion revision.c
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,10 @@ static struct commit *get_commit_reference(struct rev_info *revs, const char *na
object->flags |= flags;
if (parse_commit(commit) < 0)
die("unable to parse commit %s", name);
if (flags & UNINTERESTING)
if (flags & UNINTERESTING) {
mark_parents_uninteresting(commit);
revs->limited = 1;
}
return commit;
}

Expand Down Expand Up @@ -255,10 +257,12 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs)
}
if (!strncmp(arg, "--max-age=", 10)) {
revs->max_age = atoi(arg + 10);
revs->limited = 1;
continue;
}
if (!strncmp(arg, "--min-age=", 10)) {
revs->min_age = atoi(arg + 10);
revs->limited = 1;
continue;
}
if (!strcmp(arg, "--all")) {
Expand All @@ -277,11 +281,13 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs)
}
if (!strcmp(arg, "--topo-order")) {
revs->topo_order = 1;
revs->limited = 1;
continue;
}
if (!strcmp(arg, "--date-order")) {
revs->lifo = 0;
revs->topo_order = 1;
revs->limited = 1;
continue;
}
if (!strcmp(arg, "--dense")) {
Expand Down Expand Up @@ -309,6 +315,11 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs)
revs->edge_hint = 1;
continue;
}
if (!strcmp(arg, "--unpacked")) {
revs->unpacked = 1;
revs->limited = 1;
continue;
}
*unrecognized++ = arg;
left++;
continue;
Expand Down Expand Up @@ -365,6 +376,8 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs)
commit = get_commit_reference(revs, def, sha1, 0);
add_one_commit(commit, revs);
}
if (revs->paths)
revs->limited = 1;
*unrecognized = NULL;
return left;
}
4 changes: 3 additions & 1 deletion revision.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ struct rev_info {
tag_objects:1,
tree_objects:1,
blob_objects:1,
edge_hint:1;
edge_hint:1,
limited:1,
unpacked:1;

/* special limits */
int max_count;
Expand Down

0 comments on commit d9a8368

Please sign in to comment.