Fossil SCM
Fix the "fossil revert" command so that it works even for a new --empty checkout.
Commit
04bbb05df762a82c325991750e6f1d4209f509eedabfd772e8039aae5a72811a
Parent
b17e4c5a779447a…
1 file changed
+2
-1
+2
-1
| --- src/update.c | ||
| +++ src/update.c | ||
| @@ -688,10 +688,11 @@ | ||
| 688 | 688 | }else if( !g.localOpen ){ |
| 689 | 689 | vid = name_to_typed_rid(db_get("main-branch", 0), "ci"); |
| 690 | 690 | }else{ |
| 691 | 691 | vid = db_lget_int("checkout", 0); |
| 692 | 692 | if( !is_a_version(vid) ){ |
| 693 | + if( vid==0 ) return 0; | |
| 693 | 694 | zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid); |
| 694 | 695 | if( zRevision ){ |
| 695 | 696 | fossil_fatal("checkout artifact is not a check-in: %s", zRevision); |
| 696 | 697 | }else{ |
| 697 | 698 | fossil_fatal("invalid checkout artifact ID: %d", vid); |
| @@ -858,11 +859,11 @@ | ||
| 858 | 859 | } |
| 859 | 860 | while( db_step(&q)==SQLITE_ROW ){ |
| 860 | 861 | char *zFull; |
| 861 | 862 | zFile = db_column_text(&q, 0); |
| 862 | 863 | zFull = mprintf("%/%/", g.zLocalRoot, zFile); |
| 863 | - pRvFile = manifest_file_find(pRvManifest, zFile); | |
| 864 | + pRvFile = pRvManifest? manifest_file_find(pRvManifest, zFile) : 0; | |
| 864 | 865 | if( !pRvFile ){ |
| 865 | 866 | if( db_int(0, "SELECT rid FROM vfile WHERE pathname=%Q OR origname=%Q", |
| 866 | 867 | zFile, zFile)==0 ){ |
| 867 | 868 | fossil_print("UNMANAGE %s\n", zFile); |
| 868 | 869 | }else{ |
| 869 | 870 |
| --- src/update.c | |
| +++ src/update.c | |
| @@ -688,10 +688,11 @@ | |
| 688 | }else if( !g.localOpen ){ |
| 689 | vid = name_to_typed_rid(db_get("main-branch", 0), "ci"); |
| 690 | }else{ |
| 691 | vid = db_lget_int("checkout", 0); |
| 692 | if( !is_a_version(vid) ){ |
| 693 | zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid); |
| 694 | if( zRevision ){ |
| 695 | fossil_fatal("checkout artifact is not a check-in: %s", zRevision); |
| 696 | }else{ |
| 697 | fossil_fatal("invalid checkout artifact ID: %d", vid); |
| @@ -858,11 +859,11 @@ | |
| 858 | } |
| 859 | while( db_step(&q)==SQLITE_ROW ){ |
| 860 | char *zFull; |
| 861 | zFile = db_column_text(&q, 0); |
| 862 | zFull = mprintf("%/%/", g.zLocalRoot, zFile); |
| 863 | pRvFile = manifest_file_find(pRvManifest, zFile); |
| 864 | if( !pRvFile ){ |
| 865 | if( db_int(0, "SELECT rid FROM vfile WHERE pathname=%Q OR origname=%Q", |
| 866 | zFile, zFile)==0 ){ |
| 867 | fossil_print("UNMANAGE %s\n", zFile); |
| 868 | }else{ |
| 869 |
| --- src/update.c | |
| +++ src/update.c | |
| @@ -688,10 +688,11 @@ | |
| 688 | }else if( !g.localOpen ){ |
| 689 | vid = name_to_typed_rid(db_get("main-branch", 0), "ci"); |
| 690 | }else{ |
| 691 | vid = db_lget_int("checkout", 0); |
| 692 | if( !is_a_version(vid) ){ |
| 693 | if( vid==0 ) return 0; |
| 694 | zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid); |
| 695 | if( zRevision ){ |
| 696 | fossil_fatal("checkout artifact is not a check-in: %s", zRevision); |
| 697 | }else{ |
| 698 | fossil_fatal("invalid checkout artifact ID: %d", vid); |
| @@ -858,11 +859,11 @@ | |
| 859 | } |
| 860 | while( db_step(&q)==SQLITE_ROW ){ |
| 861 | char *zFull; |
| 862 | zFile = db_column_text(&q, 0); |
| 863 | zFull = mprintf("%/%/", g.zLocalRoot, zFile); |
| 864 | pRvFile = pRvManifest? manifest_file_find(pRvManifest, zFile) : 0; |
| 865 | if( !pRvFile ){ |
| 866 | if( db_int(0, "SELECT rid FROM vfile WHERE pathname=%Q OR origname=%Q", |
| 867 | zFile, zFile)==0 ){ |
| 868 | fossil_print("UNMANAGE %s\n", zFile); |
| 869 | }else{ |
| 870 |