]> granicus.if.org Git - cgit/commitdiff
Format git diff headers correctly when adding or removing files.
authorMichael Halstead <michael@yoctoproject.org>
Wed, 14 Nov 2012 20:41:01 +0000 (12:41 -0800)
committerJason A. Donenfeld <Jason@zx2c4.com>
Wed, 14 Nov 2012 23:56:20 +0000 (00:56 +0100)
Copying the output of cgit and using it in patches now works when adding
files to or removing files from the repository. This is helpful for people
who use cgit in their patch workflow.

ui-diff.c
ui-patch.c

index c6bad6374b0f1074b6cd7d86ea37c9c857365754..3d46da2e6d08d627034c3ee854fd99c39911306d 100644 (file)
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -229,11 +229,6 @@ static void header(unsigned char *sha1, char *path1, int mode1,
        html(" b/");
        html_txt(path2);
 
-       if (is_null_sha1(sha1))
-               path1 = "dev/null";
-       if (is_null_sha1(sha2))
-               path2 = "dev/null";
-
        if (mode1 == 0)
                htmlf("<br/>new file mode %.6o", mode2);
 
@@ -251,13 +246,21 @@ static void header(unsigned char *sha1, char *path1, int mode1,
                        if (mode2 != mode1)
                                htmlf("..%.6o", mode2);
                }
-               html("<br/>--- a/");
+               if (is_null_sha1(sha1)) {
+                       path1 = "dev/null";
+                       html("<br/>--- /");
+               } else
+                       html("<br/>--- a/");
                if (mode1 != 0)
                        cgit_tree_link(path1, NULL, NULL, ctx.qry.head,
                                       sha1_to_hex(old_rev_sha1), path1);
                else
                        html_txt(path1);
-               html("<br/>+++ b/");
+               if (is_null_sha1(sha2)) {
+                       path2 = "dev/null";
+                       html("<br/>+++ /");
+               } else
+                       html("<br/>+++ b/");
                if (mode2 != 0)
                        cgit_tree_link(path2, NULL, NULL, ctx.qry.head,
                                       sha1_to_hex(new_rev_sha1), path2);
index ca008f360c4e73d0af3f15980379409845c86ab6..79bc5096d47b87fd7437d9ae14fca6e69ecd8bcf 100644 (file)
@@ -28,11 +28,6 @@ static void header(unsigned char *sha1, char *path1, int mode1,
        subproject = (S_ISGITLINK(mode1) || S_ISGITLINK(mode2));
        htmlf("diff --git a/%s b/%s\n", path1, path2);
 
-       if (is_null_sha1(sha1))
-               path1 = "dev/null";
-       if (is_null_sha1(sha2))
-               path2 = "dev/null";
-
        if (mode1 == 0)
                htmlf("new file mode %.6o\n", mode2);
 
@@ -50,8 +45,18 @@ static void header(unsigned char *sha1, char *path1, int mode1,
                        if (mode2 != mode1)
                                htmlf("..%.6o", mode2);
                }
-               htmlf("\n--- a/%s\n", path1);
-               htmlf("+++ b/%s\n", path2);
+
+               if (is_null_sha1(sha1)) {
+                       path1 = "dev/null";
+                       htmlf("\n--- /%s\n", path1);
+               } else
+                       htmlf("\n--- a/%s\n", path1);
+
+               if (is_null_sha1(sha2)) {
+                       path2 = "dev/null";
+                       htmlf("+++ /%s\n", path2);
+               } else
+                       htmlf("+++ b/%s\n", path2);
        }
 }