|
File Diff:
String path = request.getParameter("path");
if (null == path) {
response.sendRedirect(response.encodeRedirectURL("index.jsp"));
return;
}
String r1 = request.getParameter("r1");
String r2 = request.getParameter("r2");
FileEntry fent = new FileEntry(env, path);
fent.sync();
if (null == r1) r1 = String.valueOf(fent.getHeadRev()-1);
if (null == r2) r2 = String.valueOf(fent.getHeadRev());
out.print("File: "+Utils.formatDepotPath(fent.getDepotPath(), "<A href=\"browse.jsp?path={0}\">{1}</A>", "<A href=\"file.jsp?path={0}\">{1}</A>",null, true));
out.print("<BR/>");
out.print("Versions: #"+r1+" to #"+r2);
out.print("<HR/>");
String cmd[] = { "p4", "diff2", "-du", path+"#"+r1, path+"#"+r2 };
String l, c;
out.println("<PRE style=\"diff\">");
try {
P4Process p = new P4Process(env);
p.setRawMode(true);
p.exec(cmd);
while (null != (l = p.readLine())) {
if (l.startsWith("text: ")) {
l = l.substring(6);
} else {
continue;
}
switch (l.charAt(0)) {
case '@':
c = "diffmacro";
break;
case '+':
c = "diffadd";
if (1 > l.length()) {
l = "";
} else {
l = l.substring(1);
}
break;
case '-':
c = "diffsub";
if (2 > l.length()) {
l = " ";
} else {
l = l.substring(1);
}
break;
default:
c = "diff";
if (2 > l.length()) {
l = " ";
} else {
l = l.substring(1);
}
break;
}
l = Utils.HTMLEncode(l);
out.println("<SPAN class=\""+c+"\">"+l+"</SPAN>");
}
p.close();
} catch (Exception ex) {
/* Ignored. */
}
out.println("</PRE>");
|
|