6 unsigned long worst_skew
= 0;
8 static void check_skew_recurse(struct commit
*c
, unsigned long when
)
10 struct commit_list
*p
;
12 if (c
->object
.flags
& SEEN
)
14 c
->object
.flags
|= SEEN
;
16 if (parse_commit(c
) < 0)
20 unsigned long skew
= c
->date
- when
;
21 if (skew
> worst_skew
)
25 for (p
= c
->parents
; p
; p
= p
->next
)
26 check_skew_recurse(p
->item
, c
->date
< when
? c
->date
: when
);
29 static void check_skew(struct commit
*c
)
31 check_skew_recurse(c
, time(NULL
));
34 int cmd_skew(int argc
, const char **argv
, const char *prefix
) {
38 git_config(git_default_config
, NULL
);
39 init_revisions(&revs
, prefix
);
40 argc
= setup_revisions(argc
, argv
, &revs
, NULL
);
42 for (i
= 0; i
< revs
.pending
.nr
; i
++) {
43 struct object
*o
= revs
.pending
.objects
[i
].item
;
44 if (o
->type
== OBJ_COMMIT
)
45 check_skew((struct commit
*)o
);
48 printf("%lu\n", worst_skew
);