Fossil SCM
Fix the "fossil get" command so that it sets the mtime on extracted files. [forum:/forumpost/7239e92e0f59e407|Forum post 7239e92e0f59e407].
Commit
2a387c970dd42bb2b98d56d765ff8b8a0ca99c3ac97dd4337d43e300f136e2f2
Parent
f9ead7530c6e61b…
1 file changed
+2
-1
+2
-1
| --- src/checkout.c | ||
| +++ src/checkout.c | ||
| @@ -593,11 +593,11 @@ | ||
| 593 | 593 | } |
| 594 | 594 | if( rc!=SQLITE_OK ){ |
| 595 | 595 | fossil_fatal("Cannot create an in-memory database: %s", |
| 596 | 596 | sqlite3_errmsg(db)); |
| 597 | 597 | } |
| 598 | - zSql = mprintf("SELECT name, mode, sz, data FROM sqlar" | |
| 598 | + zSql = mprintf("SELECT name, mode, sz, data, mtime FROM sqlar" | |
| 599 | 599 | " WHERE name GLOB '%q*'", zDest); |
| 600 | 600 | rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0); |
| 601 | 601 | fossil_free(zSql); |
| 602 | 602 | if( rc!=0 ){ |
| 603 | 603 | fossil_fatal("SQL error: %s\n", sqlite3_errmsg(db)); |
| @@ -633,10 +633,11 @@ | ||
| 633 | 633 | blob_write_to_file(&file, zFilename); |
| 634 | 634 | if( mode & 0x40 ){ |
| 635 | 635 | file_setexe(zFilename, 1); |
| 636 | 636 | } |
| 637 | 637 | blob_zero(&file); |
| 638 | + file_set_mtime(zFilename, sqlite3_column_int64(pStmt,4)); | |
| 638 | 639 | if( bVerbose ){ |
| 639 | 640 | fossil_print("%s\n", zFilename); |
| 640 | 641 | } |
| 641 | 642 | } |
| 642 | 643 | } |
| 643 | 644 |
| --- src/checkout.c | |
| +++ src/checkout.c | |
| @@ -593,11 +593,11 @@ | |
| 593 | } |
| 594 | if( rc!=SQLITE_OK ){ |
| 595 | fossil_fatal("Cannot create an in-memory database: %s", |
| 596 | sqlite3_errmsg(db)); |
| 597 | } |
| 598 | zSql = mprintf("SELECT name, mode, sz, data FROM sqlar" |
| 599 | " WHERE name GLOB '%q*'", zDest); |
| 600 | rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0); |
| 601 | fossil_free(zSql); |
| 602 | if( rc!=0 ){ |
| 603 | fossil_fatal("SQL error: %s\n", sqlite3_errmsg(db)); |
| @@ -633,10 +633,11 @@ | |
| 633 | blob_write_to_file(&file, zFilename); |
| 634 | if( mode & 0x40 ){ |
| 635 | file_setexe(zFilename, 1); |
| 636 | } |
| 637 | blob_zero(&file); |
| 638 | if( bVerbose ){ |
| 639 | fossil_print("%s\n", zFilename); |
| 640 | } |
| 641 | } |
| 642 | } |
| 643 |
| --- src/checkout.c | |
| +++ src/checkout.c | |
| @@ -593,11 +593,11 @@ | |
| 593 | } |
| 594 | if( rc!=SQLITE_OK ){ |
| 595 | fossil_fatal("Cannot create an in-memory database: %s", |
| 596 | sqlite3_errmsg(db)); |
| 597 | } |
| 598 | zSql = mprintf("SELECT name, mode, sz, data, mtime FROM sqlar" |
| 599 | " WHERE name GLOB '%q*'", zDest); |
| 600 | rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0); |
| 601 | fossil_free(zSql); |
| 602 | if( rc!=0 ){ |
| 603 | fossil_fatal("SQL error: %s\n", sqlite3_errmsg(db)); |
| @@ -633,10 +633,11 @@ | |
| 633 | blob_write_to_file(&file, zFilename); |
| 634 | if( mode & 0x40 ){ |
| 635 | file_setexe(zFilename, 1); |
| 636 | } |
| 637 | blob_zero(&file); |
| 638 | file_set_mtime(zFilename, sqlite3_column_int64(pStmt,4)); |
| 639 | if( bVerbose ){ |
| 640 | fossil_print("%s\n", zFilename); |
| 641 | } |
| 642 | } |
| 643 | } |
| 644 |