Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
revision traversal: SHOWN means shown
author
Junio C Hamano
<junkio@cox.net>
Tue, 6 Mar 2007 02:23:57 +0000
(18:23 -0800)
committer
Junio C Hamano
<junkio@cox.net>
Tue, 6 Mar 2007 09:08:34 +0000
(
01:08
-0800)
This moves the code to set SHOWN on the commit from get_revision_1()
back to get_revision(), so that the bit means what it originally
meant: this commit has been given back to the caller.
Also it fixes the --reverse breakage Dscho pointed out.
Signed-off-by: Junio C Hamano <junkio@cox.net>
revision.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
c2dea5a
)
diff --git
a/revision.c
b/revision.c
index 2d27ccf70b046b1928aa725d531ff354f0674f0a..35a171105a28ce10fdef58c46efdd73cd113dd50 100644
(file)
--- a/
revision.c
+++ b/
revision.c
@@
-1227,7
+1227,6
@@
static struct commit *get_revision_1(struct rev_info *revs)
if (revs->parents)
rewrite_parents(revs, commit);
}
if (revs->parents)
rewrite_parents(revs, commit);
}
- commit->object.flags |= SHOWN;
return commit;
} while (revs->commits);
return NULL;
return commit;
} while (revs->commits);
return NULL;
@@
-1280,11
+1279,22
@@
struct commit *get_revision(struct rev_info *revs)
}
if (revs->reverse) {
}
if (revs->reverse) {
+ int limit = -1;
+
+ if (0 <= revs->max_count) {
+ limit = revs->max_count;
+ if (0 < revs->skip_count)
+ limit += revs->skip_count;
+ }
l = NULL;
l = NULL;
- while ((c = get_revision_1(revs)))
+ while ((c = get_revision_1(revs)))
{
commit_list_insert(c, &l);
commit_list_insert(c, &l);
+ if ((0 < limit) && !--limit)
+ break;
+ }
revs->commits = l;
revs->reverse = 0;
revs->commits = l;
revs->reverse = 0;
+ revs->max_count = -1;
c = NULL;
}
c = NULL;
}
@@
-1298,8
+1308,6
@@
struct commit *get_revision(struct rev_info *revs)
c = get_revision_1(revs);
if (!c)
break;
c = get_revision_1(revs);
if (!c)
break;
- /* Although we grabbed it, it is not shown. */
- c->object.flags &= ~SHOWN;
}
/*
}
/*
@@
-1310,16
+1318,18
@@
struct commit *get_revision(struct rev_info *revs)
break;
case 0:
/* Although we grabbed it, it is not shown. */
break;
case 0:
/* Although we grabbed it, it is not shown. */
- if (c)
- c->object.flags &= ~SHOWN;
c = NULL;
break;
default:
revs->max_count--;
}
c = NULL;
break;
default:
revs->max_count--;
}
- if (!revs->boundary)
+ if (c)
+ c->object.flags |= SHOWN;
+
+ if (!revs->boundary) {
return c;
return c;
+ }
if (!c) {
/*
if (!c) {
/*
@@
-1341,7
+1351,7
@@
struct commit *get_revision(struct rev_info *revs)
for (l = c->parents; l; l = l->next) {
struct object *p;
p = &(l->item->object);
for (l = c->parents; l; l = l->next) {
struct object *p;
p = &(l->item->object);
- if (p->flags &
CHILD_SHOWN
)
+ if (p->flags &
(CHILD_SHOWN | SHOWN)
)
continue;
p->flags |= CHILD_SHOWN;
gc_boundary(&revs->boundary_commits);
continue;
p->flags |= CHILD_SHOWN;
gc_boundary(&revs->boundary_commits);