Re: [PATCH 3/8] xdl_change_compact(): rename i to end

2016-08-04 Thread Jeff King
On Thu, Aug 04, 2016 at 12:00:31AM +0200, Michael Haggerty wrote:

> Rename i to end, and alternate between using start and end as the
> indexing variable as appropriate.
> 
> Rename ixref to end_matching_other.
> 
> Add some more comments.

I'd usually complain that there is too much "what" in your commit
message, but in this case, the diff really is hard to read. Having a
summary up front is nice.

There's no "why", but I imagine it is just "I had to do this to even
make sense of this function".

-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/8] xdl_change_compact(): rename i to end

2016-08-03 Thread Michael Haggerty
Rename i to end, and alternate between using start and end as the
indexing variable as appropriate.

Rename ixref to end_matching_other.

Add some more comments.

Signed-off-by: Michael Haggerty 
---
 xdiff/xdiffi.c | 70 --
 1 file changed, 39 insertions(+), 31 deletions(-)

diff --git a/xdiff/xdiffi.c b/xdiff/xdiffi.c
index a0a485c..0f235bc 100644
--- a/xdiff/xdiffi.c
+++ b/xdiff/xdiffi.c
@@ -414,7 +414,7 @@ static int recs_match(xrecord_t **recs, long ixs, long ix, 
long flags)
 }
 
 int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long flags) {
-   long i, io, start, ixref, groupsize, nrec = xdf->nrec;
+   long start, end, io, end_matching_other, groupsize, nrec = xdf->nrec;
char *rchg = xdf->rchg, *rchgo = xdfo->rchg;
unsigned int blank_lines;
xrecord_t **recs = xdf->recs;
@@ -424,7 +424,8 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long 
flags) {
 * change groups for a consistent and pretty diff output. This also
 * helps in finding joinable change groups and reduce the diff size.
 */
-   for (i = io = 0;;) {
+   end = io = 0;
+   while (1) {
/*
 * Find the first changed line in the to-be-compacted file.
 * We need to keep track of both indexes, so if we find a
@@ -434,7 +435,7 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long 
flags) {
 * not need index bounding since the array is prepared with
 * a zero at position -1 and N.
 */
-   for (; i < nrec && !rchg[i]; i++) {
+   for (start = end; start < nrec && !rchg[start]; start++) {
/* skip over any changed lines in the other file... */
while (rchgo[io])
io++;
@@ -442,24 +443,29 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, 
long flags) {
/* ...plus one non-changed line. */
io++;
}
-   if (i == nrec)
+   if (start == nrec)
break;
 
/*
-* Record the start of a changed-group in the to-be-compacted 
file
-* and find the end of it, on both to-be-compacted and other 
file
-* indexes (i and io).
+* That's the start of a changed-group in the to-be-compacted
+* file. Now find its end.
 */
-   start = i++;
-
-   while (rchg[i])
-   i++;
+   end = start + 1;
+   while (rchg[end])
+   end++;
 
while (rchgo[io])
   io++;
 
+   /*
+* Now shift the change up and then down as far as possible in
+* each direction. If it bumps into any other changes, merge 
them.
+* If there are any changes in the other file that this change
+* could line up with, set end_matching_other to the end 
position
+* of this change that would leave them aligned.
+*/
do {
-   groupsize = i - start;
+   groupsize = end - start;
 
/*
 * Are there any blank lines that could appear as the 
last
@@ -472,9 +478,9 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long 
flags) {
 * to the last line of the current change group, shift 
the
 * group backward.
 */
-   while (start > 0 && recs_match(recs, start - 1, i - 1, 
flags)) {
+   while (start > 0 && recs_match(recs, start - 1, end - 
1, flags)) {
rchg[--start] = 1;
-   rchg[--i] = 0;
+   rchg[--end] = 0;
 
/*
 * This change might have joined two change 
groups.
@@ -501,13 +507,13 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, 
long flags) {
 * the other file. Record the end-of-group
 * position:
 */
-   ixref = i;
+   end_matching_other = end;
} else {
/*
 * Otherwise, set a value to signify that there
 * are no matched changes in the other file:
 */
-   ixref = nrec;
+   end_matching_other = -1;
}
 
/*
@@ -515,11 +521,11 @@ int