strbuf: add xstrfmt helper
[gitweb.git] / builtin / replace.c
index 3d6edaf7c7787c04cddf5a092e708dce71295e2e..1bb491d3c4f282e7f68d25cae0e00f419df1dd93 100644 (file)
@@ -16,6 +16,7 @@
 
 static const char * const git_replace_usage[] = {
        N_("git replace [-f] <object> <replacement>"),
+       N_("git replace [-f] --edit <object>"),
        N_("git replace -d <object>..."),
        N_("git replace [--format=<format>] [-l [<pattern>]]"),
        NULL
@@ -268,7 +269,8 @@ static int edit_and_replace(const char *object_ref, int force)
 {
        char *tmpfile = git_pathdup("REPLACE_EDITOBJ");
        enum object_type type;
-       unsigned char old[20], new[20];
+       unsigned char old[20], new[20], prev[20];
+       char ref[PATH_MAX];
 
        if (get_sha1(object_ref, old) < 0)
                die("Not a valid object name: '%s'", object_ref);
@@ -277,6 +279,8 @@ static int edit_and_replace(const char *object_ref, int force)
        if (type < 0)
                die("unable to get object type for %s", sha1_to_hex(old));
 
+       check_ref_valid(old, prev, ref, sizeof(ref), force);
+
        export_object(old, tmpfile);
        if (launch_editor(tmpfile, NULL, NULL) < 0)
                die("editing object file failed");