Fossil SCM

Fix the "fossil revert" command so that it works even for a new --empty checkout.

drh 2020-04-02 18:56 accordion-about-wiki
Commit 04bbb05df762a82c325991750e6f1d4209f509eedabfd772e8039aae5a72811a
1 file changed +2 -1
+2 -1
--- src/update.c
+++ src/update.c
@@ -688,10 +688,11 @@
688688
}else if( !g.localOpen ){
689689
vid = name_to_typed_rid(db_get("main-branch", 0), "ci");
690690
}else{
691691
vid = db_lget_int("checkout", 0);
692692
if( !is_a_version(vid) ){
693
+ if( vid==0 ) return 0;
693694
zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid);
694695
if( zRevision ){
695696
fossil_fatal("checkout artifact is not a check-in: %s", zRevision);
696697
}else{
697698
fossil_fatal("invalid checkout artifact ID: %d", vid);
@@ -858,11 +859,11 @@
858859
}
859860
while( db_step(&q)==SQLITE_ROW ){
860861
char *zFull;
861862
zFile = db_column_text(&q, 0);
862863
zFull = mprintf("%/%/", g.zLocalRoot, zFile);
863
- pRvFile = manifest_file_find(pRvManifest, zFile);
864
+ pRvFile = pRvManifest? manifest_file_find(pRvManifest, zFile) : 0;
864865
if( !pRvFile ){
865866
if( db_int(0, "SELECT rid FROM vfile WHERE pathname=%Q OR origname=%Q",
866867
zFile, zFile)==0 ){
867868
fossil_print("UNMANAGE %s\n", zFile);
868869
}else{
869870
--- 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

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button