From: Johannes Schindelin <Johannes.Schindelin@xxxxxx> When calling `git fast-export a..a b` when a and b refer to the same commit, nothing would be exported, and an incorrect reset line would be printed for b ('from :0'). Extract a handle_reset function that deals with this, which can then be re-used in a later commit. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@xxxxxx> Signed-off-by: Sverre Rabbelier <srabbelier@xxxxxxxxx> --- builtin/fast-export.c | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) diff --git a/builtin/fast-export.c b/builtin/fast-export.c index 9836e6b..c4c4391 100644 --- a/builtin/fast-export.c +++ b/builtin/fast-export.c @@ -529,9 +529,20 @@ static void get_tags_and_duplicates(struct object_array *pending, } } +static void handle_reset(const char *name, struct object *object) +{ + int mark = get_object_mark(object); + + if (mark) + printf("reset %s\nfrom :%d\n\n", name, + get_object_mark(object)); + else + printf("reset %s\nfrom %s\n\n", name, + sha1_to_hex(object->sha1)); +} + static void handle_tags_and_duplicates(struct string_list *extra_refs) { - struct commit *commit; int i; for (i = extra_refs->nr - 1; i >= 0; i--) { @@ -543,9 +554,7 @@ static void handle_tags_and_duplicates(struct string_list *extra_refs) break; case OBJ_COMMIT: /* create refs pointing to already seen commits */ - commit = (struct commit *)object; - printf("reset %s\nfrom :%d\n\n", name, - get_object_mark(&commit->object)); + handle_reset(name, object); show_progress(); break; } -- 1.7.8.rc0.36.g67522.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html