*/
 #include "cache.h"
 #include "config.h"
+#include "object-store.h"
+#include "repository.h"
 #include "commit.h"
 #include "tree.h"
 #include "builtin.h"
                                usage(commit_tree_usage);
                        if (get_oid_commit(argv[i], &oid))
                                die("Not a valid object name %s", argv[i]);
-                       assert_sha1_type(oid.hash, OBJ_COMMIT);
-                       new_parent(lookup_commit(&oid), &parents);
+                       assert_oid_type(&oid, OBJ_COMMIT);
+                       new_parent(lookup_commit(the_repository, &oid),
+                                                &parents);
                        continue;
                }
 
-               if (skip_prefix(arg, "-S", &sign_commit))
+               if (!strcmp(arg, "--gpg-sign")) {
+                   sign_commit = "";
+                   continue;
+               }
+
+               if (skip_prefix(arg, "-S", &sign_commit) ||
+                       skip_prefix(arg, "--gpg-sign=", &sign_commit))
                        continue;
 
                if (!strcmp(arg, "--no-gpg-sign")) {
                        die_errno("git commit-tree: failed to read");
        }
 
-       if (commit_tree(buffer.buf, buffer.len, tree_oid.hash, parents,
-                       commit_oid.hash, NULL, sign_commit)) {
+       if (commit_tree(buffer.buf, buffer.len, &tree_oid, parents, &commit_oid,
+                       NULL, sign_commit)) {
                strbuf_release(&buffer);
                return 1;
        }