@@ -73,11 +73,12 @@
73 73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
74 74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void diff_file(
75 75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *pFile1, /* In memory content to compare from */
76 76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFile2, /* On disk content to compare to */
77 77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName, /* Display name of the file */
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zDiffCmd /* Command for comparison */
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDiffCmd, /* Command for comparison */
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int ignoreEolWs /* Ignore whitespace at end of lines */
79 80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
80 81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDiffCmd==0 ){
81 82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob out; /* Diff output text */
82 83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob file2; /* Content of zFile2 */
83 84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -85,11 +86,11 @@
85 86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&file2);
86 87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_read_from_file(&file2, zFile2);
87 88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
88 89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Compute and output the differences */
89 90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&out);
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- text_diff(pFile1, &file2, &out, 5);
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ text_diff(pFile1, &file2, &out, 5, ignoreEolWs);
91 92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("--- %s\n+++ %s\n", zName, zName);
92 93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("%s\n", blob_str(&out));
93 94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94 95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Release memory resources */
95 96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&file2);
@@ -136,17 +137,18 @@
136 137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
137 138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void diff_file_mem(
138 139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *pFile1, /* In memory content to compare from */
139 140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *pFile2, /* In memory content to compare to */
140 141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName, /* Display name of the file */
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zDiffCmd /* Command for comparison */
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDiffCmd, /* Command for comparison */
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int ignoreEolWs /* Ignore whitespace at end of lines */
142 144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
143 145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDiffCmd==0 ){
144 146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob out; /* Diff output text */
145 147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146 148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&out);
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- text_diff(pFile1, pFile2, &out, 5);
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ text_diff(pFile1, pFile2, &out, 5, ignoreEolWs);
148 150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("--- %s\n+++ %s\n", zName, zName);
149 151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("%s\n", blob_str(&out));
150 152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
151 153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Release memory resources */
152 154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&out);
@@ -180,26 +182,34 @@
180 182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
181 183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
182 184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Do a diff against a single file named in g.argv[2] from version zFrom
183 185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** against the same file on disk.
184 186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void diff_one_against_disk(const char *zFrom, const char *zDiffCmd){
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void diff_one_against_disk(
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFrom, /* Name of file */
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDiffCmd, /* Use this "diff" command */
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int ignoreEolWs /* Ignore whitespace changes at end of lines */
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
186 192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob fname;
187 193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob content;
188 194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
file_tree_name(g.argv[2], &fname, 1);
189 195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
historical_version_of_file(zFrom, blob_str(&fname), &content, 0);
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diff_file(&content, g.argv[2], g.argv[2], zDiffCmd);
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_file(&content, g.argv[2], g.argv[2], zDiffCmd, ignoreEolWs);
191 197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&content);
192 198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&fname);
193 199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
194 200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
195 201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
196 202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Run a diff between the version zFrom and files on disk. zFrom might
197 203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be NULL which means to simply show the difference between the edited
198 204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** files on disk and the check-out on which they are based.
199 205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void diff_all_against_disk(const char *zFrom, const char *zDiffCmd){
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void diff_all_against_disk(
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFrom, /* Version to difference from */
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDiffCmd, /* Use this diff command. NULL for built-in */
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int ignoreEolWs /* Ignore end-of-line whitespace */
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
201 211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int vid;
202 212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob sql;
203 213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
204 214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
205 215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vid = db_lget_int("checkout", 0);
@@ -265,11 +275,11 @@
265 275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_get(srcid, &content);
266 276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("Index: %s\n======================================="
267 277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"============================\n",
268 278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPathname
269 279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diff_file(&content, zFullName, zPathname, zDiffCmd);
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_file(&content, zFullName, zPathname, zDiffCmd, ignoreEolWs);
271 281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&content);
272 282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
273 283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(zFullName);
274 284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
275 285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
@@ -282,20 +292,21 @@
282 292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The filename is contained in g.argv[2].
283 293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
284 294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void diff_one_two_versions(
285 295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFrom,
286 296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTo,
287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zDiffCmd
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDiffCmd,
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int ignoreEolWs
288 299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
289 300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zName;
290 301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob fname;
291 302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob v1, v2;
292 303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
file_tree_name(g.argv[2], &fname, 1);
293 304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName = blob_str(&fname);
294 305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
historical_version_of_file(zFrom, zName, &v1, 0);
295 306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
historical_version_of_file(zTo, zName, &v2, 0);
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diff_file_mem(&v1, &v2, zName, zDiffCmd);
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_file_mem(&v1, &v2, zName, zDiffCmd, ignoreEolWs);
297 308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&v1);
298 309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&v2);
299 310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&fname);
300 311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
301 312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -303,11 +314,12 @@
303 314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Output the differences between two check-ins.
304 315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
305 316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void diff_all_two_versions(
306 317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFrom,
307 318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTo,
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zDiffCmd
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDiffCmd,
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int ignoreEolWs
309 321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
310 322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Manifest mFrom, mTo;
311 323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iFrom, iTo;
312 324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
313 325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_from_name(zFrom, &mFrom);
@@ -334,15 +346,19 @@
334 346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTo++;
335 347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
336 348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob f1, f2;
337 349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rid;
338 350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("CHANGED %s\n", mFrom.aFile[iFrom].zName);
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("Index: %s\n======================================="
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "============================\n",
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mFrom.aFile[iFrom].zName
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
339 355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rid = uuid_to_rid(mFrom.aFile[iFrom].zUuid, 0);
340 356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_get(rid, &f1);
341 357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rid = uuid_to_rid(mTo.aFile[iTo].zUuid, 0);
342 358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_get(rid, &f2);
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diff_file_mem(&f1, &f2, mFrom.aFile[iFrom].zName, zDiffCmd);
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_file_mem(&f1, &f2, mFrom.aFile[iFrom].zName, zDiffCmd, ignoreEolWs);
344 360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&f1);
345 361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&f2);
346 362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iFrom++;
347 363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTo++;
348 364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -393,24 +409,24 @@
393 409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
verify_all_options();
394 410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !isInternDiff && g.argc==3 ){
395 411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDiffCmd = db_get(isGDiff ? "gdiff-command" : "diff-command", 0);
396 412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
397 413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc==3 ){
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diff_one_against_disk(zFrom, zDiffCmd);
414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_one_against_disk(zFrom, zDiffCmd, 0);
399 415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diff_all_against_disk(zFrom, zDiffCmd);
416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_all_against_disk(zFrom, zDiffCmd, 0);
401 417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
402 418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zFrom==0 ){
403 419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("must use --from if --to is present");
404 420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
405 421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_find_and_open_repository(1);
406 422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
verify_all_options();
407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !isInternDiff && g.argc==3 ){
423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !isInternDiff ){
408 424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDiffCmd = db_get(isGDiff ? "gdiff-command" : "diff-command", 0);
409 425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
410 426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc==3 ){
411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diff_one_two_versions(zFrom, zTo, zDiffCmd);
427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_one_two_versions(zFrom, zTo, zDiffCmd, 0);
412 428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diff_all_two_versions(zFrom, zTo, zDiffCmd);
429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_all_two_versions(zFrom, zTo, zDiffCmd, 0);
414 430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
415 431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
416 432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
417 433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!