about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Halstead <michael@yoctoproject.org>2012-11-14 12:41:01 -0800
committerJason A. Donenfeld <Jason@zx2c4.com>2012-11-15 00:56:20 +0100
commit62a40c78fed772e795eca8d4e7d6f6ead4d9a125 (patch)
tree03d81c7b21c66594d7380f118fdf2711a248bf6d
parentMakefile: get snapshots from github (diff)
downloadcgit-pink-62a40c78fed772e795eca8d4e7d6f6ead4d9a125.tar.gz
cgit-pink-62a40c78fed772e795eca8d4e7d6f6ead4d9a125.zip
Format git diff headers correctly when adding or removing files.
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.
-rw-r--r--ui-diff.c17
-rw-r--r--ui-patch.c19
2 files changed, 22 insertions, 14 deletions
diff --git a/ui-diff.c b/ui-diff.c
index c6bad63..3d46da2 100644
--- 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);
diff --git a/ui-patch.c b/ui-patch.c
index ca008f3..79bc509 100644
--- a/ui-patch.c
+++ b/ui-patch.c
@@ -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);
 	}
 }