All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Add file addition/deletion indicator in diffstat
@ 2006-11-11 12:33 pclouds
  2006-12-17  0:12 ` Nguyen Thai Ngoc Duy
  0 siblings, 1 reply; 4+ messages in thread
From: pclouds @ 2006-11-11 12:33 UTC (permalink / raw)
  To: git

For new files, " (new)" will be appended to filenames.
For deleted files, " (deleted)" will be appended to filenames.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/diff.c b/diff.c
index 3315378..bd78138 100644
--- a/diff.c
+++ b/diff.c
@@ -599,6 +599,8 @@ struct diffstat_t {
 		unsigned is_unmerged:1;
 		unsigned is_binary:1;
 		unsigned is_renamed:1;
+		unsigned is_added:1;
+		unsigned is_deleted:1;
 		unsigned int added, deleted;
 	} **files;
 };
@@ -707,6 +709,10 @@ static void show_stats(struct diffstat_t
 		}
 
 		len = strlen(file->name);
+		if (file->is_added)
+			len += 6; /* " (new)" */
+		if (file->is_deleted)
+			len += 10; /* " (deleted)" */
 		if (max_len < len)
 			max_len = len;
 
@@ -735,12 +741,25 @@ static void show_stats(struct diffstat_t
 		int added = data->files[i]->added;
 		int deleted = data->files[i]->deleted;
 		int name_len;
+		char *new_name = NULL;
 
 		/*
 		 * "scale" the filename
 		 */
 		len = name_width;
 		name_len = strlen(name);
+		if (data->files[i]->is_added) {
+			new_name = name = xmalloc(name_len+7);  /* " (new)" */
+			memcpy(name,data->files[i]->name,name_len);
+			memcpy(name+name_len," (new)",7);
+			name_len += 6;
+		}
+		if (data->files[i]->is_deleted) {
+			new_name = name = xmalloc(name_len+11);  /* " (deleted)" */
+			memcpy(name,data->files[i]->name,name_len);
+			memcpy(name+name_len," (deleted)",11);
+			name_len += 10; /* " (deleted)" */
+		}
 		if (name_width < name_len) {
 			char *slash;
 			prefix = "...";
@@ -787,6 +806,8 @@ static void show_stats(struct diffstat_t
 		show_graph('-', del, del_c, reset);
 		putchar('\n');
 	free_diffstat_file:
+		if (new_name)
+			free(new_name);
 		free(data->files[i]->name);
 		free(data->files[i]);
 	}
@@ -1067,6 +1088,14 @@ static void builtin_diffstat(const char
 		data->is_unmerged = 1;
 		return;
 	}
+	if (DIFF_FILE_VALID(one)) {
+		if (!DIFF_FILE_VALID(two))
+			data->is_deleted = 1;
+	}
+	else {
+		if (DIFF_FILE_VALID(two))
+			data->is_added = 1;
+	}
 	if (complete_rewrite) {
 		diff_populate_filespec(one, 0);
 		diff_populate_filespec(two, 0);
-- 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-12-17  0:23 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-11 12:33 [PATCH] Add file addition/deletion indicator in diffstat pclouds
2006-12-17  0:12 ` Nguyen Thai Ngoc Duy
2006-12-17  0:15   ` Junio C Hamano
2006-12-17  0:23     ` Nguyen Thai Ngoc Duy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.