Fossil SCM
Fix the "fossil diff --undo" option so that it works even when called from a subdirectory of the project.
Commit
f6c13632bb9632ff55219fc1a3ff4ef471764714
Parent
485aa80625acdb3…
1 file changed
+10
-3
+10
-3
| --- src/diffcmd.c | ||
| +++ src/diffcmd.c | ||
| @@ -478,14 +478,21 @@ | ||
| 478 | 478 | const char *zBinGlob, /* Treat file names matching this as binary */ |
| 479 | 479 | int fIncludeBinary, /* Treat file names matching this as binary */ |
| 480 | 480 | u64 diffFlags /* Flags controlling diff output */ |
| 481 | 481 | ){ |
| 482 | 482 | Stmt q; |
| 483 | - db_prepare(&q, "SELECT pathname FROM undo"); | |
| 483 | + Blob content; | |
| 484 | + db_prepare(&q, "SELECT pathname, content FROM undo"); | |
| 485 | + blob_init(&content, 0, 0); | |
| 484 | 486 | while( db_step(&q)==SQLITE_ROW ){ |
| 485 | - diff_one_against_undo(zDiffCmd, zBinGlob, fIncludeBinary, diffFlags, | |
| 486 | - db_column_text(&q, 0)); | |
| 487 | + const char *zFile = (const char*)db_column_text(&q, 0); | |
| 488 | + char *zFullName = mprintf("%s%s", g.zLocalRoot, zFile); | |
| 489 | + db_column_blob(&q, 1, &content); | |
| 490 | + diff_file(&content, 0, zFullName, zFile, | |
| 491 | + zDiffCmd, zBinGlob, fIncludeBinary, diffFlags); | |
| 492 | + fossil_free(zFullName); | |
| 493 | + blob_reset(&content); | |
| 487 | 494 | } |
| 488 | 495 | db_finalize(&q); |
| 489 | 496 | } |
| 490 | 497 | |
| 491 | 498 | /* |
| 492 | 499 |
| --- src/diffcmd.c | |
| +++ src/diffcmd.c | |
| @@ -478,14 +478,21 @@ | |
| 478 | const char *zBinGlob, /* Treat file names matching this as binary */ |
| 479 | int fIncludeBinary, /* Treat file names matching this as binary */ |
| 480 | u64 diffFlags /* Flags controlling diff output */ |
| 481 | ){ |
| 482 | Stmt q; |
| 483 | db_prepare(&q, "SELECT pathname FROM undo"); |
| 484 | while( db_step(&q)==SQLITE_ROW ){ |
| 485 | diff_one_against_undo(zDiffCmd, zBinGlob, fIncludeBinary, diffFlags, |
| 486 | db_column_text(&q, 0)); |
| 487 | } |
| 488 | db_finalize(&q); |
| 489 | } |
| 490 | |
| 491 | /* |
| 492 |
| --- src/diffcmd.c | |
| +++ src/diffcmd.c | |
| @@ -478,14 +478,21 @@ | |
| 478 | const char *zBinGlob, /* Treat file names matching this as binary */ |
| 479 | int fIncludeBinary, /* Treat file names matching this as binary */ |
| 480 | u64 diffFlags /* Flags controlling diff output */ |
| 481 | ){ |
| 482 | Stmt q; |
| 483 | Blob content; |
| 484 | db_prepare(&q, "SELECT pathname, content FROM undo"); |
| 485 | blob_init(&content, 0, 0); |
| 486 | while( db_step(&q)==SQLITE_ROW ){ |
| 487 | const char *zFile = (const char*)db_column_text(&q, 0); |
| 488 | char *zFullName = mprintf("%s%s", g.zLocalRoot, zFile); |
| 489 | db_column_blob(&q, 1, &content); |
| 490 | diff_file(&content, 0, zFullName, zFile, |
| 491 | zDiffCmd, zBinGlob, fIncludeBinary, diffFlags); |
| 492 | fossil_free(zFullName); |
| 493 | blob_reset(&content); |
| 494 | } |
| 495 | db_finalize(&q); |
| 496 | } |
| 497 | |
| 498 | /* |
| 499 |