"brian m. carlson" <sandals@xxxxxxxxxxxxxxxxxxxx> writes: > Now that we have a way to export stashes to a ref, let's provide a way > + /* > + * Now, walk each entry, adding it to the stash as a normal stash > + * commit. > + */ > + for (i = items.nr - 1; i >= 0; i--) { > + unsigned long bufsize; > + const char *p; > + const struct object_id *oid = items.oid + i; > + > + this = lookup_commit_reference(the_repository, oid); > + buffer = get_commit_buffer(this, &bufsize); > + if (!buffer) { > + res = -1; > + error(_("cannot read commit buffer for %s"), oid_to_hex(oid)); > + goto out; > + } > + > + p = memmem(buffer, bufsize, "\n\n", 2); > + if (!p) { > + res = -1; > + error(_("cannot parse commit %s"), oid_to_hex(oid)); > + goto out; > + } > + > + p += 2; > + msg = xmemdupz(p, bufsize - (p - buffer)); > + unuse_commit_buffer(this, buffer); > + buffer = NULL; > + > + if (do_store_stash(oid, msg, 1)) { This seems like you're using the commit message as the reflog message - is this necessary? For what it's worth, all tests still pass if I replace "msg" with "NULL". Other than that, everything looks good to me. It might be worth adding tests that check that the exported stashes are in the expected format (to ensure that we can read stashes exported from another Git version) but I don't think that has to block the submission of this patch set.