Fossil SCM
If you "sync" against a server for which you do not have push permission, you get an error message but it still does the pull.
Commit
2b51dbe02b0e507897e5b4bf89efd45404d45ac2
Parent
7eecb079ed3c029…
1 file changed
+20
-6
+20
-6
| --- src/xfer.c | ||
| +++ src/xfer.c | ||
| @@ -515,16 +515,20 @@ | ||
| 515 | 515 | break; |
| 516 | 516 | } |
| 517 | 517 | isPull = 1; |
| 518 | 518 | }else{ |
| 519 | 519 | if( !g.okWrite ){ |
| 520 | - cgi_reset_content(); | |
| 521 | - @ error not\sauthorized\sto\swrite | |
| 522 | - nErr++; | |
| 523 | - break; | |
| 520 | + if( !isPull ){ | |
| 521 | + cgi_reset_content(); | |
| 522 | + @ error not\sauthorized\sto\swrite | |
| 523 | + nErr++; | |
| 524 | + }else{ | |
| 525 | + @ message pull\sonly\s-\snot\sauthorized\sto\spush | |
| 526 | + } | |
| 527 | + }else{ | |
| 528 | + isPush = 1; | |
| 524 | 529 | } |
| 525 | - isPush = 1; | |
| 526 | 530 | } |
| 527 | 531 | }else |
| 528 | 532 | |
| 529 | 533 | /* clone |
| 530 | 534 | ** |
| @@ -828,14 +832,24 @@ | ||
| 828 | 832 | ** same server. |
| 829 | 833 | */ |
| 830 | 834 | if( blob_eq(&xfer.aToken[0], "cookie") && xfer.nToken==2 ){ |
| 831 | 835 | db_set("cookie", blob_str(&xfer.aToken[1])); |
| 832 | 836 | }else |
| 837 | + | |
| 838 | + /* message MESSAGE | |
| 839 | + ** | |
| 840 | + ** Print a message. Similar to "error" but does not stop processing | |
| 841 | + */ | |
| 842 | + if( blob_eq(&xfer.aToken[0],"message") && xfer.nToken==2 ){ | |
| 843 | + char *zMsg = blob_terminate(&xfer.aToken[1]); | |
| 844 | + defossilize(zMsg); | |
| 845 | + printf("Server says: %s\n", zMsg); | |
| 846 | + }else | |
| 833 | 847 | |
| 834 | 848 | /* error MESSAGE |
| 835 | 849 | ** |
| 836 | - ** Report an error | |
| 850 | + ** Report an error and abandon the sync session | |
| 837 | 851 | */ |
| 838 | 852 | if( blob_eq(&xfer.aToken[0],"error") && xfer.nToken==2 ){ |
| 839 | 853 | char *zMsg = blob_terminate(&xfer.aToken[1]); |
| 840 | 854 | defossilize(zMsg); |
| 841 | 855 | blob_appendf(&xfer.err, "server says: %s", zMsg); |
| 842 | 856 |
| --- src/xfer.c | |
| +++ src/xfer.c | |
| @@ -515,16 +515,20 @@ | |
| 515 | break; |
| 516 | } |
| 517 | isPull = 1; |
| 518 | }else{ |
| 519 | if( !g.okWrite ){ |
| 520 | cgi_reset_content(); |
| 521 | @ error not\sauthorized\sto\swrite |
| 522 | nErr++; |
| 523 | break; |
| 524 | } |
| 525 | isPush = 1; |
| 526 | } |
| 527 | }else |
| 528 | |
| 529 | /* clone |
| 530 | ** |
| @@ -828,14 +832,24 @@ | |
| 828 | ** same server. |
| 829 | */ |
| 830 | if( blob_eq(&xfer.aToken[0], "cookie") && xfer.nToken==2 ){ |
| 831 | db_set("cookie", blob_str(&xfer.aToken[1])); |
| 832 | }else |
| 833 | |
| 834 | /* error MESSAGE |
| 835 | ** |
| 836 | ** Report an error |
| 837 | */ |
| 838 | if( blob_eq(&xfer.aToken[0],"error") && xfer.nToken==2 ){ |
| 839 | char *zMsg = blob_terminate(&xfer.aToken[1]); |
| 840 | defossilize(zMsg); |
| 841 | blob_appendf(&xfer.err, "server says: %s", zMsg); |
| 842 |
| --- src/xfer.c | |
| +++ src/xfer.c | |
| @@ -515,16 +515,20 @@ | |
| 515 | break; |
| 516 | } |
| 517 | isPull = 1; |
| 518 | }else{ |
| 519 | if( !g.okWrite ){ |
| 520 | if( !isPull ){ |
| 521 | cgi_reset_content(); |
| 522 | @ error not\sauthorized\sto\swrite |
| 523 | nErr++; |
| 524 | }else{ |
| 525 | @ message pull\sonly\s-\snot\sauthorized\sto\spush |
| 526 | } |
| 527 | }else{ |
| 528 | isPush = 1; |
| 529 | } |
| 530 | } |
| 531 | }else |
| 532 | |
| 533 | /* clone |
| 534 | ** |
| @@ -828,14 +832,24 @@ | |
| 832 | ** same server. |
| 833 | */ |
| 834 | if( blob_eq(&xfer.aToken[0], "cookie") && xfer.nToken==2 ){ |
| 835 | db_set("cookie", blob_str(&xfer.aToken[1])); |
| 836 | }else |
| 837 | |
| 838 | /* message MESSAGE |
| 839 | ** |
| 840 | ** Print a message. Similar to "error" but does not stop processing |
| 841 | */ |
| 842 | if( blob_eq(&xfer.aToken[0],"message") && xfer.nToken==2 ){ |
| 843 | char *zMsg = blob_terminate(&xfer.aToken[1]); |
| 844 | defossilize(zMsg); |
| 845 | printf("Server says: %s\n", zMsg); |
| 846 | }else |
| 847 | |
| 848 | /* error MESSAGE |
| 849 | ** |
| 850 | ** Report an error and abandon the sync session |
| 851 | */ |
| 852 | if( blob_eq(&xfer.aToken[0],"error") && xfer.nToken==2 ){ |
| 853 | char *zMsg = blob_terminate(&xfer.aToken[1]); |
| 854 | defossilize(zMsg); |
| 855 | blob_appendf(&xfer.err, "server says: %s", zMsg); |
| 856 |