ref: 5e010fd8a82ec3b6552b4002bcd4be0586081e9a
parent: f79ba91129f15c3804a4e836cbfb822608a1059b
author: Ori Bernstein <ori@eigenstate.org>
date: Tue Jan 30 17:58:19 EST 2024
vdiff: add support for stripping path elements when plumbing Git generates patches with spurious leading path elements for compatibility with Torvalds git; This means that we want to strip them out when interacting with patches. The '-p'option add support for this element stripping in git
--- a/sys/man/1/vdiff
+++ b/sys/man/1/vdiff
@@ -6,6 +6,10 @@
[
.B -b
]
+[
+.B -p
+.I strip
+]
.SH DESCRIPTION
.I vdiff
reads unified diff output from standard input and displays a colored version. Right clicking on a line will send a
@@ -22,6 +26,13 @@
The
.B \-b
flag changes the color scheme to white text on a black background.
+.PP
+The
+.B \-p
+.I nstrip
+flag removes
+.I nstrip
+path elements from path before plumbing.
.SH EXAMPLE
% git/diff |vdiff
.SH SOURCE
--- a/sys/src/cmd/vdiff.c
+++ b/sys/src/cmd/vdiff.c
@@ -61,17 +61,21 @@
int lcount;
int maxlength;
int Δpan;
+int nstrip;
const char ellipsis[] = "...";
void
plumb(char *f, int l)
{
- int fd;
- char wd[256], addr[300]={0};
+ int fd, i;
+ char *p, wd[256], addr[300]={0};
fd = plumbopen("send", OWRITE);
if(fd<0)
return;
+ for(i = 0; i < nstrip; i++)
+ if((p = strchr(f, '/')) != nil)
+ f = p;
getwd(wd, sizeof wd);
snprint(addr, sizeof addr, "%s:%d", f, l);
plumbsendtext(fd, "vdiff", "edit", wd, addr);
@@ -415,7 +419,7 @@
void
usage(void)
{
- fprint(2, "%s [-b]\n", argv0);
+ fprint(2, "%s [-b] [-p n]\n", argv0);
exits("usage");
}
@@ -439,6 +443,9 @@
ARGBEGIN{
case 'b':
b = 1;
+ break;
+ case 'p':
+ nstrip = atoi(EARGF(usage()));
break;
default:
usage();