{"thread":{"id":"17996","subject":"[RFC/PATCH] Add a new commit-raw command.","startedAt":"2009-02-24T21:28:34Z","lastAt":"2009-02-24T23:07:01Z","messageCount":4,"participants":["Felipe Contreras","Jeff King","Shawn O. Pearce"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"106107","messageId":"1235510914-23319-1-git-send-email-felipe.contreras@gmail.com","threadId":"17996","inReplyTo":null,"subject":"[RFC/PATCH] Add a new commit-raw command.","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2009-02-24T21:28:34Z","receivedAt":"2009-02-24T21:28:34Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"This command receives as input a raw commit object, and outputs the\ngenerated sha1. This is very useful when doing some serious repo\nreconstructions.\n\nFor example: git cat-file -p 343ee25 | git write-raw\n343ee2589d1b94772f513cc699765622351acb19\n\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n Makefile             |    1 +\n builtin-commit-raw.c |   23 +++++++++++++++++++++++\n builtin.h            |    1 +\n git.c                |    1 +\n 4 files changed, 26 insertions(+), 0 deletions(-)\n create mode 100644 builtin-commit-raw.c\n\ndiff --git a/Makefile b/Makefile\nindex b040a96..94212b3 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -524,6 +524,7 @@ BUILTIN_OBJS += builtin-checkout-index.o\n BUILTIN_OBJS += builtin-checkout.o\n BUILTIN_OBJS += builtin-clean.o\n BUILTIN_OBJS += builtin-clone.o\n+BUILTIN_OBJS += builtin-commit-raw.o\n BUILTIN_OBJS += builtin-commit-tree.o\n BUILTIN_OBJS += builtin-commit.o\n BUILTIN_OBJS += builtin-config.o\ndiff --git a/builtin-commit-raw.c b/builtin-commit-raw.c\nnew file mode 100644\nindex 0000000..66c41f4\n--- /dev/null\n+++ b/builtin-commit-raw.c\n@@ -0,0 +1,23 @@\n+/*\n+ * Writes a raw commit object\n+ */\n+\n+#include \"cache.h\"\n+#include \"commit.h\"\n+\n+int cmd_commit_raw(int argc, const char **argv, const char *unused_prefix)\n+{\n+\tunsigned char commit_sha1[20];\n+\tstruct strbuf buffer;\n+\n+\tstrbuf_init(&buffer, 8192);\n+\n+\tstrbuf_read(&buffer, 0, 0);\n+\n+\tif (!write_sha1_file(buffer.buf, buffer.len, \"commit\", commit_sha1)) {\n+\t\tprintf(\"%s\\n\", sha1_to_hex(commit_sha1));\n+\t\treturn 0;\n+\t}\n+\telse\n+\t\treturn 1;\n+}\ndiff --git a/builtin.h b/builtin.h\nindex 1495cf6..5c33e69 100644\n--- a/builtin.h\n+++ b/builtin.h\n@@ -38,6 +38,7 @@ extern int cmd_cherry_pick(int argc, const char **argv, const char *prefix);\n extern int cmd_clone(int argc, const char **argv, const char *prefix);\n extern int cmd_clean(int argc, const char **argv, const char *prefix);\n extern int cmd_commit(int argc, const char **argv, const char *prefix);\n+extern int cmd_commit_raw(int argc, const char **argv, const char *prefix);\n extern int cmd_commit_tree(int argc, const char **argv, const char *prefix);\n extern int cmd_count_objects(int argc, const char **argv, const char *prefix);\n extern int cmd_describe(int argc, const char **argv, const char *prefix);\ndiff --git a/git.c b/git.c\nindex c2b181e..b033365 100644\n--- a/git.c\n+++ b/git.c\n@@ -285,6 +285,7 @@ static void handle_internal_command(int argc, const char **argv)\n \t\t{ \"clone\", cmd_clone },\n \t\t{ \"clean\", cmd_clean, RUN_SETUP | NEED_WORK_TREE },\n \t\t{ \"commit\", cmd_commit, RUN_SETUP | NEED_WORK_TREE },\n+\t\t{ \"commit-raw\", cmd_commit_raw, RUN_SETUP },\n \t\t{ \"commit-tree\", cmd_commit_tree, RUN_SETUP },\n \t\t{ \"config\", cmd_config },\n \t\t{ \"count-objects\", cmd_count_objects, RUN_SETUP },\n-- \n1.6.1.3\n"},{"id":"106116","messageId":"20090224221406.GA6299@coredump.intra.peff.net","threadId":"17996","inReplyTo":"1235510914-23319-1-git-send-email-felipe.contreras@gmail.com","subject":"Re: [RFC/PATCH] Add a new commit-raw command.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2009-02-24T22:14:06Z","receivedAt":"2009-02-24T22:14:06Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Feb 24, 2009 at 11:28:34PM +0200, Felipe Contreras wrote:\n\n> This command receives as input a raw commit object, and outputs the\n> generated sha1. This is very useful when doing some serious repo\n> reconstructions.\n> \n> For example: git cat-file -p 343ee25 | git write-raw\n> 343ee2589d1b94772f513cc699765622351acb19\n\nHow about:\n\n  git cat-file -p 343ee25 | git hash-object -t commit --stdin\n\n?\n\n-Peff\n"},{"id":"106117","messageId":"94a0d4530902241417ld391492h2f76e325ef20a125@mail.gmail.com","threadId":"17996","inReplyTo":"20090224221406.GA6299@coredump.intra.peff.net","subject":"Re: [RFC/PATCH] Add a new commit-raw command.","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2009-02-24T22:17:01Z","receivedAt":"2009-02-24T22:17:01Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"On Wed, Feb 25, 2009 at 12:14 AM, Jeff King <peff@peff.net> wrote:\n> On Tue, Feb 24, 2009 at 11:28:34PM +0200, Felipe Contreras wrote:\n>\n>> This command receives as input a raw commit object, and outputs the\n>> generated sha1. This is very useful when doing some serious repo\n>> reconstructions.\n>>\n>> For example: git cat-file -p 343ee25 | git write-raw\n>> 343ee2589d1b94772f513cc699765622351acb19\n>\n> How about:\n>\n>  git cat-file -p 343ee25 | git hash-object -t commit --stdin\n\nDuh! Thanks :)\n\nI knew there must have been something for that use-case.\n\n-- \nFelipe Contreras\n"},{"id":"106123","messageId":"20090224230701.GW22848@spearce.org","threadId":"17996","inReplyTo":"20090224221406.GA6299@coredump.intra.peff.net","subject":"Re: [RFC/PATCH] Add a new commit-raw command.","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2009-02-24T23:07:01Z","receivedAt":"2009-02-24T23:07:01Z","isPatch":true,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"Jeff King <peff@peff.net> wrote:\n> On Tue, Feb 24, 2009 at 11:28:34PM +0200, Felipe Contreras wrote:\n> \n> > This command receives as input a raw commit object, and outputs the\n> > generated sha1. This is very useful when doing some serious repo\n> > reconstructions.\n> > \n> > For example: git cat-file -p 343ee25 | git write-raw\n> > 343ee2589d1b94772f513cc699765622351acb19\n> \n> How about:\n> \n>   git cat-file -p 343ee25 | git hash-object -t commit --stdin\n\nAnd if you are really writing a lot of new objects, use fast-import.\n\n-- \nShawn.\n"}]}