static unsigned long parse_commit_date(const char *buf, const char *tail)
{
- unsigned long date;
const char *dateptr;
if (buf + 6 >= tail)
if (buf >= tail)
return 0;
/* dateptr < buf && buf[-1] == '\n', so strtoul will stop at buf-1 */
- date = strtoul(dateptr, NULL, 10);
- if (date == ULONG_MAX)
- date = 0;
- return date;
+ return strtoul(dateptr, NULL, 10);
}
static struct commit_graft **commit_graft;
bufptr[47] != '\n')
return error("bad parents in commit %s", sha1_to_hex(item->object.sha1));
bufptr += 48;
- if (graft)
+ /*
+ * The clone is shallow if nr_parent < 0, and we must
+ * not traverse its real parents even when we unhide them.
+ */
+ if (graft && (graft->nr_parent < 0 || grafts_replace_parents))
continue;
new_parent = lookup_commit(parent);
if (new_parent)
return ret;
}
-static void unparse_commit_list(struct commit_list *list)
-{
- for (; list; list = list->next)
- unparse_commit(list->item);
-}
-
-void unparse_commit(struct commit *item)
-{
- item->object.flags = 0;
- item->object.used = 0;
- if (item->object.parsed) {
- item->object.parsed = 0;
- if (item->parents) {
- unparse_commit_list(item->parents);
- free_commit_list(item->parents);
- item->parents = NULL;
- }
- }
-}
-
struct commit_list *commit_list_insert(struct commit *item, struct commit_list **list_p)
{
struct commit_list *new_list = xmalloc(sizeof(struct commit_list));