Fossil SCM

Merge latest changes from trunk.

dmitry 2011-09-01 23:18 symlinks merge
Commit 2b1a4797ddb731960250fe81a9b9bc6556d67c3a
D Makefile.in
-9
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +0,0 @@
1
- -D_HAVE_SQLITE_ssil-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -D_HAVE_SQLITE_ssil-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -fuzz -D_HAVE_SQLITE_ssil-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -D_HAVE_SQLITE_ssil-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -fuzzSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -D_HAVE_SQLITE_ssitclsh -DFOSSIL_ENABLE_LEGACY_MV_RM=1@CFLAGS@@CFLAGS@Rdi make source
2
-#
3
-#
4
-OBJDIR = ./@P@1BE,N:fossil:@FOSSIL_CI_PFX -fuzz -D_HAVE_SQLITE_ssil-@FOSSILendif
5
-ifeq ($(findstriSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -fuzz -D_HAVE_SQLITE$(MAKE) reconfig
6
-endif
7
-@AUTOREMAKE@ && $(MAKE)
8
-endif
9
-FOSSIL_ENABLE_M +
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +0,0 @@
1 -D_HAVE_SQLITE_ssil-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -D_HAVE_SQLITE_ssil-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -fuzz -D_HAVE_SQLITE_ssil-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -D_HAVE_SQLITE_ssil-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -fuzzSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX-@FOSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -D_HAVE_SQLITE_ssitclsh -DFOSSIL_ENABLE_LEGACY_MV_RM=1@CFLAGS@@CFLAGS@Rdi make source
2 #
3 #
4 OBJDIR = ./@P@1BE,N:fossil:@FOSSIL_CI_PFX -fuzz -D_HAVE_SQLITE_ssil-@FOSSILendif
5 ifeq ($(findstriSSIL_CI_PFX@P@1BE,N:fossil:@FOSSIL_CI_PFX -fuzz -D_HAVE_SQLITE$(MAKE) reconfig
6 endif
7 @AUTOREMAKE@ && $(MAKE)
8 endif
9 FOSSIL_ENABLE_M +
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +0,0 @@
 
 
 
 
 
 
 
 
 
-2
--- src/db.c
+++ src/db.c
@@ -761,12 +761,10 @@
761761
** If zDbName is a valid local database file, open it and return
762762
** true. If it is not a valid local database file, return 0.
763763
*/
764764
static int isValidLocalDb(const char *zDbName){
765765
i64 lsize;
766
- int rc;
767
- sqlite3_stmt *pStmt;
768766
769767
if( file_access(zDbName, F_OK) ) return 0;
770768
lsize = file_size(zDbName);
771769
if( lsize%1024!=0 || lsize<4096 ) return 0;
772770
db_open_or_attach(zDbName, "localdb");
773771
--- src/db.c
+++ src/db.c
@@ -761,12 +761,10 @@
761 ** If zDbName is a valid local database file, open it and return
762 ** true. If it is not a valid local database file, return 0.
763 */
764 static int isValidLocalDb(const char *zDbName){
765 i64 lsize;
766 int rc;
767 sqlite3_stmt *pStmt;
768
769 if( file_access(zDbName, F_OK) ) return 0;
770 lsize = file_size(zDbName);
771 if( lsize%1024!=0 || lsize<4096 ) return 0;
772 db_open_or_attach(zDbName, "localdb");
773
--- src/db.c
+++ src/db.c
@@ -761,12 +761,10 @@
761 ** If zDbName is a valid local database file, open it and return
762 ** true. If it is not a valid local database file, return 0.
763 */
764 static int isValidLocalDb(const char *zDbName){
765 i64 lsize;
 
 
766
767 if( file_access(zDbName, F_OK) ) return 0;
768 lsize = file_size(zDbName);
769 if( lsize%1024!=0 || lsize<4096 ) return 0;
770 db_open_or_attach(zDbName, "localdb");
771
--- src/http_ssl.c
+++ src/http_ssl.c
@@ -280,10 +280,21 @@
280280
if( blob_str(&ans)[0]=='a' ) {
281281
ssl_save_certificate(cert);
282282
}
283283
blob_reset(&ans);
284284
}
285
+
286
+ /* Set the Global.zIpAddr variable to the server we are talking to.
287
+ ** This is used to populate the ipaddr column of the rcvfrom table,
288
+ ** if any files are received from the server.
289
+ */
290
+ {
291
+ /* IPv4 only code */
292
+ const unsigned char *ip = (const unsigned char *) BIO_get_conn_ip(iBio);
293
+ g.zIpAddr = mprintf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
294
+ }
295
+
285296
X509_free(cert);
286297
return 0;
287298
}
288299
289300
/*
290301
--- src/http_ssl.c
+++ src/http_ssl.c
@@ -280,10 +280,21 @@
280 if( blob_str(&ans)[0]=='a' ) {
281 ssl_save_certificate(cert);
282 }
283 blob_reset(&ans);
284 }
 
 
 
 
 
 
 
 
 
 
 
285 X509_free(cert);
286 return 0;
287 }
288
289 /*
290
--- src/http_ssl.c
+++ src/http_ssl.c
@@ -280,10 +280,21 @@
280 if( blob_str(&ans)[0]=='a' ) {
281 ssl_save_certificate(cert);
282 }
283 blob_reset(&ans);
284 }
285
286 /* Set the Global.zIpAddr variable to the server we are talking to.
287 ** This is used to populate the ipaddr column of the rcvfrom table,
288 ** if any files are received from the server.
289 */
290 {
291 /* IPv4 only code */
292 const unsigned char *ip = (const unsigned char *) BIO_get_conn_ip(iBio);
293 g.zIpAddr = mprintf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
294 }
295
296 X509_free(cert);
297 return 0;
298 }
299
300 /*
301
+93 -7
--- src/tkt.c
+++ src/tkt.c
@@ -899,10 +899,14 @@
899899
**
900900
** %fossil ticket add FIELD VALUE ?FIELD VALUE .. ? ?-q|--quote?
901901
**
902902
** like set, but create a new ticket with the given values.
903903
**
904
+** %fossil ticket history TICKETUUID
905
+**
906
+** Show the complete change history for the ticket
907
+**
904908
** The values in set|add are not validated against the definitions
905909
** given in "Ticket Common Script".
906910
*/
907911
void ticket_cmd(void){
908912
int n;
@@ -916,16 +920,16 @@
916920
if( !db_exists("SELECT 1 FROM user WHERE login=%Q", g.zLogin) ){
917921
fossil_fatal("no such user: %s", g.zLogin);
918922
}
919923
920924
if( g.argc<3 ){
921
- usage("add|fieldlist|set|show");
925
+ usage("add|fieldlist|set|show|history");
922926
}else{
923927
n = strlen(g.argv[2]);
924928
if( n==1 && g.argv[2][0]=='s' ){
925929
/* set/show cannot be distinguished, so show the usage */
926
- usage("add|fieldlist|set|show");
930
+ usage("add|fieldlist|set|show|history");
927931
}else if( strncmp(g.argv[2],"list",n)==0 ){
928932
if( g.argc==3 ){
929933
usage("list fields|reports");
930934
}else{
931935
n = strlen(g.argv[3]);
@@ -970,19 +974,24 @@
970974
rptshow( zRep, zSep, zFilterUuid, tktEncoding );
971975
972976
}
973977
}else{
974978
/* add a new ticket or update an existing ticket */
975
- enum { set,add,err } eCmd = err;
979
+ enum { set,add,history,err } eCmd = err;
976980
int i = 0;
977981
int rid;
978982
const char *zTktUuid = 0;
979983
Blob tktchng, cksum;
980984
981985
/* get command type (set/add) and get uuid, if needed for set */
982
- if( strncmp(g.argv[2],"set",n)==0 || strncmp(g.argv[2],"change",n)==0 ){
983
- eCmd = set;
986
+ if( strncmp(g.argv[2],"set",n)==0 || strncmp(g.argv[2],"change",n)==0 ||
987
+ strncmp(g.argv[2],"history",n)==0 ){
988
+ if( strncmp(g.argv[2],"history",n)==0 ){
989
+ eCmd = history;
990
+ }else{
991
+ eCmd = set;
992
+ }
984993
if( g.argc==3 ){
985994
usage("set TICKETUUID");
986995
}
987996
zTktUuid = db_text(0,
988997
"SELECT tkt_uuid FROM ticket WHERE tkt_uuid GLOB '%s*'", g.argv[3]
@@ -996,13 +1005,90 @@
9961005
i = 3;
9971006
zTktUuid = db_text(0, "SELECT lower(hex(randomblob(20)))");
9981007
}
9991008
/* none of set/add, so show the usage! */
10001009
if( eCmd==err ){
1001
- usage("add|fieldlist|set|show");
1010
+ usage("add|fieldlist|set|show|history");
10021011
}
1003
-
1012
+
1013
+ /* we just handle history separately here, does not get out */
1014
+ if( eCmd==history ){
1015
+ Stmt q;
1016
+ char *zTitle;
1017
+ int tagid;
1018
+
1019
+ if ( i != g.argc ){
1020
+ fossil_fatal("no other parameters expected to %s!",g.argv[2]);
1021
+ }
1022
+ tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname GLOB 'tkt-%q*'",zTktUuid);
1023
+ if( tagid==0 ){
1024
+ fossil_fatal("no such ticket %h", zTktUuid);
1025
+ }
1026
+ db_prepare(&q,
1027
+ "SELECT datetime(mtime,'localtime'), objid, uuid, NULL, NULL, NULL"
1028
+ " FROM event, blob"
1029
+ " WHERE objid IN (SELECT rid FROM tagxref WHERE tagid=%d)"
1030
+ " AND blob.rid=event.objid"
1031
+ " UNION "
1032
+ "SELECT datetime(mtime,'localtime'), attachid, uuid, src, filename, user"
1033
+ " FROM attachment, blob"
1034
+ " WHERE target=(SELECT substr(tagname,5) FROM tag WHERE tagid=%d)"
1035
+ " AND blob.rid=attachid"
1036
+ " ORDER BY 1 DESC",
1037
+ tagid, tagid
1038
+ );
1039
+ while( db_step(&q)==SQLITE_ROW ){
1040
+ Manifest *pTicket;
1041
+ char zShort[12];
1042
+ const char *zDate = db_column_text(&q, 0);
1043
+ int rid = db_column_int(&q, 1);
1044
+ const char *zChngUuid = db_column_text(&q, 2);
1045
+ const char *zFile = db_column_text(&q, 4);
1046
+ memcpy(zShort, zChngUuid, 10);
1047
+ zShort[10] = 0;
1048
+ if( zFile!=0 ){
1049
+ const char *zSrc = db_column_text(&q, 3);
1050
+ const char *zUser = db_column_text(&q, 5);
1051
+ if( zSrc==0 || zSrc[0]==0 ){
1052
+ fossil_print("Delete attachment %h\n", zFile);
1053
+ }else{
1054
+ fossil_print("Add attachment %h\n", zFile);
1055
+ }
1056
+ fossil_print(" by %h on %h\n", zUser, zDate);
1057
+ }else{
1058
+ pTicket = manifest_get(rid, CFTYPE_TICKET);
1059
+ if( pTicket ){
1060
+ int i;
1061
+
1062
+ fossil_print("Ticket Change by %h on %h:\n", pTicket->zUser, zDate);
1063
+ for(i=0; i<pTicket->nField; i++){
1064
+ Blob val;
1065
+ const char *z;
1066
+ z = pTicket->aField[i].zName;
1067
+ blob_set(&val, pTicket->aField[i].zValue);
1068
+ if( z[0]=='+' ){
1069
+ fossil_print(" Append to ");
1070
+ z++;
1071
+ }else{
1072
+ fossil_print(" Change ");
1073
+ }
1074
+ fossil_print("%h: ",z);
1075
+ if( blob_size(&val)>50 || contains_newline(&val)) {
1076
+ fossil_print("\n ",blob_str(&val));
1077
+ comment_print(blob_str(&val),4,79);
1078
+ }else{
1079
+ fossil_print("%s\n",blob_str(&val));
1080
+ }
1081
+ blob_reset(&val);
1082
+ }
1083
+ }
1084
+ manifest_destroy(pTicket);
1085
+ }
1086
+ }
1087
+ db_finalize(&q);
1088
+ return;
1089
+ }
10041090
/* read all given ticket field/value pairs from command line */
10051091
if( i==g.argc ){
10061092
fossil_fatal("empty %s command aborted!",g.argv[2]);
10071093
}
10081094
getAllTicketFields();
10091095
10101096
ADDED test/merge_renames.test
--- src/tkt.c
+++ src/tkt.c
@@ -899,10 +899,14 @@
899 **
900 ** %fossil ticket add FIELD VALUE ?FIELD VALUE .. ? ?-q|--quote?
901 **
902 ** like set, but create a new ticket with the given values.
903 **
 
 
 
 
904 ** The values in set|add are not validated against the definitions
905 ** given in "Ticket Common Script".
906 */
907 void ticket_cmd(void){
908 int n;
@@ -916,16 +920,16 @@
916 if( !db_exists("SELECT 1 FROM user WHERE login=%Q", g.zLogin) ){
917 fossil_fatal("no such user: %s", g.zLogin);
918 }
919
920 if( g.argc<3 ){
921 usage("add|fieldlist|set|show");
922 }else{
923 n = strlen(g.argv[2]);
924 if( n==1 && g.argv[2][0]=='s' ){
925 /* set/show cannot be distinguished, so show the usage */
926 usage("add|fieldlist|set|show");
927 }else if( strncmp(g.argv[2],"list",n)==0 ){
928 if( g.argc==3 ){
929 usage("list fields|reports");
930 }else{
931 n = strlen(g.argv[3]);
@@ -970,19 +974,24 @@
970 rptshow( zRep, zSep, zFilterUuid, tktEncoding );
971
972 }
973 }else{
974 /* add a new ticket or update an existing ticket */
975 enum { set,add,err } eCmd = err;
976 int i = 0;
977 int rid;
978 const char *zTktUuid = 0;
979 Blob tktchng, cksum;
980
981 /* get command type (set/add) and get uuid, if needed for set */
982 if( strncmp(g.argv[2],"set",n)==0 || strncmp(g.argv[2],"change",n)==0 ){
983 eCmd = set;
 
 
 
 
 
984 if( g.argc==3 ){
985 usage("set TICKETUUID");
986 }
987 zTktUuid = db_text(0,
988 "SELECT tkt_uuid FROM ticket WHERE tkt_uuid GLOB '%s*'", g.argv[3]
@@ -996,13 +1005,90 @@
996 i = 3;
997 zTktUuid = db_text(0, "SELECT lower(hex(randomblob(20)))");
998 }
999 /* none of set/add, so show the usage! */
1000 if( eCmd==err ){
1001 usage("add|fieldlist|set|show");
1002 }
1003
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1004 /* read all given ticket field/value pairs from command line */
1005 if( i==g.argc ){
1006 fossil_fatal("empty %s command aborted!",g.argv[2]);
1007 }
1008 getAllTicketFields();
1009
1010 DDED test/merge_renames.test
--- src/tkt.c
+++ src/tkt.c
@@ -899,10 +899,14 @@
899 **
900 ** %fossil ticket add FIELD VALUE ?FIELD VALUE .. ? ?-q|--quote?
901 **
902 ** like set, but create a new ticket with the given values.
903 **
904 ** %fossil ticket history TICKETUUID
905 **
906 ** Show the complete change history for the ticket
907 **
908 ** The values in set|add are not validated against the definitions
909 ** given in "Ticket Common Script".
910 */
911 void ticket_cmd(void){
912 int n;
@@ -916,16 +920,16 @@
920 if( !db_exists("SELECT 1 FROM user WHERE login=%Q", g.zLogin) ){
921 fossil_fatal("no such user: %s", g.zLogin);
922 }
923
924 if( g.argc<3 ){
925 usage("add|fieldlist|set|show|history");
926 }else{
927 n = strlen(g.argv[2]);
928 if( n==1 && g.argv[2][0]=='s' ){
929 /* set/show cannot be distinguished, so show the usage */
930 usage("add|fieldlist|set|show|history");
931 }else if( strncmp(g.argv[2],"list",n)==0 ){
932 if( g.argc==3 ){
933 usage("list fields|reports");
934 }else{
935 n = strlen(g.argv[3]);
@@ -970,19 +974,24 @@
974 rptshow( zRep, zSep, zFilterUuid, tktEncoding );
975
976 }
977 }else{
978 /* add a new ticket or update an existing ticket */
979 enum { set,add,history,err } eCmd = err;
980 int i = 0;
981 int rid;
982 const char *zTktUuid = 0;
983 Blob tktchng, cksum;
984
985 /* get command type (set/add) and get uuid, if needed for set */
986 if( strncmp(g.argv[2],"set",n)==0 || strncmp(g.argv[2],"change",n)==0 ||
987 strncmp(g.argv[2],"history",n)==0 ){
988 if( strncmp(g.argv[2],"history",n)==0 ){
989 eCmd = history;
990 }else{
991 eCmd = set;
992 }
993 if( g.argc==3 ){
994 usage("set TICKETUUID");
995 }
996 zTktUuid = db_text(0,
997 "SELECT tkt_uuid FROM ticket WHERE tkt_uuid GLOB '%s*'", g.argv[3]
@@ -996,13 +1005,90 @@
1005 i = 3;
1006 zTktUuid = db_text(0, "SELECT lower(hex(randomblob(20)))");
1007 }
1008 /* none of set/add, so show the usage! */
1009 if( eCmd==err ){
1010 usage("add|fieldlist|set|show|history");
1011 }
1012
1013 /* we just handle history separately here, does not get out */
1014 if( eCmd==history ){
1015 Stmt q;
1016 char *zTitle;
1017 int tagid;
1018
1019 if ( i != g.argc ){
1020 fossil_fatal("no other parameters expected to %s!",g.argv[2]);
1021 }
1022 tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname GLOB 'tkt-%q*'",zTktUuid);
1023 if( tagid==0 ){
1024 fossil_fatal("no such ticket %h", zTktUuid);
1025 }
1026 db_prepare(&q,
1027 "SELECT datetime(mtime,'localtime'), objid, uuid, NULL, NULL, NULL"
1028 " FROM event, blob"
1029 " WHERE objid IN (SELECT rid FROM tagxref WHERE tagid=%d)"
1030 " AND blob.rid=event.objid"
1031 " UNION "
1032 "SELECT datetime(mtime,'localtime'), attachid, uuid, src, filename, user"
1033 " FROM attachment, blob"
1034 " WHERE target=(SELECT substr(tagname,5) FROM tag WHERE tagid=%d)"
1035 " AND blob.rid=attachid"
1036 " ORDER BY 1 DESC",
1037 tagid, tagid
1038 );
1039 while( db_step(&q)==SQLITE_ROW ){
1040 Manifest *pTicket;
1041 char zShort[12];
1042 const char *zDate = db_column_text(&q, 0);
1043 int rid = db_column_int(&q, 1);
1044 const char *zChngUuid = db_column_text(&q, 2);
1045 const char *zFile = db_column_text(&q, 4);
1046 memcpy(zShort, zChngUuid, 10);
1047 zShort[10] = 0;
1048 if( zFile!=0 ){
1049 const char *zSrc = db_column_text(&q, 3);
1050 const char *zUser = db_column_text(&q, 5);
1051 if( zSrc==0 || zSrc[0]==0 ){
1052 fossil_print("Delete attachment %h\n", zFile);
1053 }else{
1054 fossil_print("Add attachment %h\n", zFile);
1055 }
1056 fossil_print(" by %h on %h\n", zUser, zDate);
1057 }else{
1058 pTicket = manifest_get(rid, CFTYPE_TICKET);
1059 if( pTicket ){
1060 int i;
1061
1062 fossil_print("Ticket Change by %h on %h:\n", pTicket->zUser, zDate);
1063 for(i=0; i<pTicket->nField; i++){
1064 Blob val;
1065 const char *z;
1066 z = pTicket->aField[i].zName;
1067 blob_set(&val, pTicket->aField[i].zValue);
1068 if( z[0]=='+' ){
1069 fossil_print(" Append to ");
1070 z++;
1071 }else{
1072 fossil_print(" Change ");
1073 }
1074 fossil_print("%h: ",z);
1075 if( blob_size(&val)>50 || contains_newline(&val)) {
1076 fossil_print("\n ",blob_str(&val));
1077 comment_print(blob_str(&val),4,79);
1078 }else{
1079 fossil_print("%s\n",blob_str(&val));
1080 }
1081 blob_reset(&val);
1082 }
1083 }
1084 manifest_destroy(pTicket);
1085 }
1086 }
1087 db_finalize(&q);
1088 return;
1089 }
1090 /* read all given ticket field/value pairs from command line */
1091 if( i==g.argc ){
1092 fossil_fatal("empty %s command aborted!",g.argv[2]);
1093 }
1094 getAllTicketFields();
1095
1096 DDED test/merge_renames.test
--- a/test/merge_renames.test
+++ b/test/merge_renames.test
@@ -0,0 +1,76 @@
1
+exec mv f1::fossilexe info} r #
2
+# Tests 2 "catch {exec $::fossilexe info} resnot within an open checkoutf {![regexp {use --repository} $res]} {
3
+ puts stderr "Cannot run this test within an open checkout"
4
+ return
5
+} failed
6
+ protOut "Error, the merf {$deletes!=0} {
7
+ # failed
8
+ protOut repo_iniTests 2 "f1 f2
9
+filefossil new rep.fo
10
+ protOut "Error, the merge should 1 0
11
+} else {
12
+ te1 1
13
+#
14
+# Texec rmiled
15
+ protOut "Error, the merg2RESULT
16
+
17
+# Not a nice waySULT
18
+
19
+set deletes 0e} $RESULT {
20
+ if {$status=="DELETE"} {
21
+ set deletes [expr $deletes + 1]
22
+ }
23
+}
24
+
25
+if {$deletes!=0} {
26
+ # failed
27
+ protOut "Error, the merge should 1 0
28
+} else {
29
+ te1 1
30
+#
31
+# Testputs $RESULT
32
+
33
+# Not a nice way to check, but I don't know more tcl now
34
+exec mvfile rename -force f1 f2 knownBugrepo_iniTests 2 "f1 f2
35
+fil2rotOut "Error, the merge should 3 02# TO BE WRITTEN. Test 5f14 knownBugrepo_iniTests 267176c3aa4or, the merge should SULT
36
+
37
+set deletes 0
38
+foreach {status #
39
+# Tests 2 "catch {exec $::fossilexe info} res
40
+if {![regexp {use --repositputs res=$ository} $res]} {
41
+ puts stderr "Cannot run this test within an open checkout"
42
+ returnes 0
43
+foreach {status fil1ame -force f1 f2 ULT {
44
+
45
+e merge should SULT
46
+
47
+set deletes 0e} $RESULT {
48
+ if {$status=="DELETE"} {
49
+ set deletes [expr $deletes + 1]
50
+ }
51
+}
52
+
53
+if {$deletes!=0}exec rmiled
54
+ protOut "Error, the merg$RESULT
55
+
56
+# Not a nice way to check, but I don't know more tcl now
57
+set deletes 0
58
+foreach {status filename} $RESULT {
59
+ if {$status=="DELETE"} {
60
+ set deletes [expr $deletes + 1]
61
+ }
62
+}
63
+
64
+if {$deletes!=0} {
65
+ # failed
66
+ protOut "Error, the merge should 3 0
67
+} else {
68
+ te3 1
69
+#
70
+# Test# TO BE WRITTEN. Test 5f1 f2
71
+file renaexec mvfile rename -force f1 f2 knownBugrepo_iniTests 2 "f1 f2
72
+fil2rotOut "Error, the merge should 3 02# TO BE WRITTEN. Test 5f14 knownBugrepo_iniTests 267176c3aa4or, the merge should SULT
73
+
74
+set deletes 0
75
+foreach {status #
76
+# Tests 2 "catch {exec $::fossilexe info} res
--- a/test/merge_renames.test
+++ b/test/merge_renames.test
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/test/merge_renames.test
+++ b/test/merge_renames.test
@@ -0,0 +1,76 @@
1 exec mv f1::fossilexe info} r #
2 # Tests 2 "catch {exec $::fossilexe info} resnot within an open checkoutf {![regexp {use --repository} $res]} {
3 puts stderr "Cannot run this test within an open checkout"
4 return
5 } failed
6 protOut "Error, the merf {$deletes!=0} {
7 # failed
8 protOut repo_iniTests 2 "f1 f2
9 filefossil new rep.fo
10 protOut "Error, the merge should 1 0
11 } else {
12 te1 1
13 #
14 # Texec rmiled
15 protOut "Error, the merg2RESULT
16
17 # Not a nice waySULT
18
19 set deletes 0e} $RESULT {
20 if {$status=="DELETE"} {
21 set deletes [expr $deletes + 1]
22 }
23 }
24
25 if {$deletes!=0} {
26 # failed
27 protOut "Error, the merge should 1 0
28 } else {
29 te1 1
30 #
31 # Testputs $RESULT
32
33 # Not a nice way to check, but I don't know more tcl now
34 exec mvfile rename -force f1 f2 knownBugrepo_iniTests 2 "f1 f2
35 fil2rotOut "Error, the merge should 3 02# TO BE WRITTEN. Test 5f14 knownBugrepo_iniTests 267176c3aa4or, the merge should SULT
36
37 set deletes 0
38 foreach {status #
39 # Tests 2 "catch {exec $::fossilexe info} res
40 if {![regexp {use --repositputs res=$ository} $res]} {
41 puts stderr "Cannot run this test within an open checkout"
42 returnes 0
43 foreach {status fil1ame -force f1 f2 ULT {
44
45 e merge should SULT
46
47 set deletes 0e} $RESULT {
48 if {$status=="DELETE"} {
49 set deletes [expr $deletes + 1]
50 }
51 }
52
53 if {$deletes!=0}exec rmiled
54 protOut "Error, the merg$RESULT
55
56 # Not a nice way to check, but I don't know more tcl now
57 set deletes 0
58 foreach {status filename} $RESULT {
59 if {$status=="DELETE"} {
60 set deletes [expr $deletes + 1]
61 }
62 }
63
64 if {$deletes!=0} {
65 # failed
66 protOut "Error, the merge should 3 0
67 } else {
68 te3 1
69 #
70 # Test# TO BE WRITTEN. Test 5f1 f2
71 file renaexec mvfile rename -force f1 f2 knownBugrepo_iniTests 2 "f1 f2
72 fil2rotOut "Error, the merge should 3 02# TO BE WRITTEN. Test 5f14 knownBugrepo_iniTests 267176c3aa4or, the merge should SULT
73
74 set deletes 0
75 foreach {status #
76 # Tests 2 "catch {exec $::fossilexe info} res
+5 -7
--- www/build.wiki
+++ www/build.wiki
@@ -28,23 +28,22 @@
2828
<p>Fossil is self-hosting, so you can obtain a ZIP archive containing
2929
a snapshot of the latest version directly from fossil's own fossil
3030
repository. Follow these steps:</p>
3131
3232
<ol>
33
-<li><p>Pointer your web browser at
33
+<li><p>Point your web browser at
3434
<a href="http://www.fossil-scm.org/">
3535
http://www.fossil-scm.org/</a>. Click on the "Login" menu button.</p></li>
3636
3737
<li><p>Log in as anonymous. The password is shown on screen.
3838
The reason for requiring this login is to prevent spiders from
3939
walking the entire website, downloading ZIP archives
4040
of every historical version, and thereby soaking up all our bandwidth.</p></li>
4141
4242
<li><p>Click on the
43
-<a href="http://www.fossil-scm.org/fossil/timeline">Timeline</a> or
44
-<a href="http://www.fossil-scm.org/fossil/leaves">Leaves</a> link at
45
-the top of the page.</p></li>
43
+<a href="http://www.fossil-scm.org/fossil/timeline">Timeline</a>
44
+link at the top of the page.</p></li>
4645
4746
<li><p>Select a version of of fossil you want to download. Click on its
4847
link. Note that you must successfully log in as "anonymous" in step 1
4948
above in order to see the link to the detailed version information.</p></li>
5049
@@ -56,13 +55,12 @@
5655
5756
<h2>2.0 Compiling</h2>
5857
5958
<ol>
6059
<li value="6">
61
-<p>Create a directory to hold the source code. Then unarchive the
62
-ZIP or tarball you downloaded into that directory. You should be
63
-in the top-level folder of that directory</p></li>
60
+<p>Unpack the ZIP or tarball you downloaded into that directory then
61
+<b>cd</b> into the directory created.</p></li>
6462
6563
<li><i>(Optional, unix only)</i>
6664
Run <b>./configure</b> to construct a makefile.
6765
6866
<ol type="a">
6967
--- www/build.wiki
+++ www/build.wiki
@@ -28,23 +28,22 @@
28 <p>Fossil is self-hosting, so you can obtain a ZIP archive containing
29 a snapshot of the latest version directly from fossil's own fossil
30 repository. Follow these steps:</p>
31
32 <ol>
33 <li><p>Pointer your web browser at
34 <a href="http://www.fossil-scm.org/">
35 http://www.fossil-scm.org/</a>. Click on the "Login" menu button.</p></li>
36
37 <li><p>Log in as anonymous. The password is shown on screen.
38 The reason for requiring this login is to prevent spiders from
39 walking the entire website, downloading ZIP archives
40 of every historical version, and thereby soaking up all our bandwidth.</p></li>
41
42 <li><p>Click on the
43 <a href="http://www.fossil-scm.org/fossil/timeline">Timeline</a> or
44 <a href="http://www.fossil-scm.org/fossil/leaves">Leaves</a> link at
45 the top of the page.</p></li>
46
47 <li><p>Select a version of of fossil you want to download. Click on its
48 link. Note that you must successfully log in as "anonymous" in step 1
49 above in order to see the link to the detailed version information.</p></li>
50
@@ -56,13 +55,12 @@
56
57 <h2>2.0 Compiling</h2>
58
59 <ol>
60 <li value="6">
61 <p>Create a directory to hold the source code. Then unarchive the
62 ZIP or tarball you downloaded into that directory. You should be
63 in the top-level folder of that directory</p></li>
64
65 <li><i>(Optional, unix only)</i>
66 Run <b>./configure</b> to construct a makefile.
67
68 <ol type="a">
69
--- www/build.wiki
+++ www/build.wiki
@@ -28,23 +28,22 @@
28 <p>Fossil is self-hosting, so you can obtain a ZIP archive containing
29 a snapshot of the latest version directly from fossil's own fossil
30 repository. Follow these steps:</p>
31
32 <ol>
33 <li><p>Point your web browser at
34 <a href="http://www.fossil-scm.org/">
35 http://www.fossil-scm.org/</a>. Click on the "Login" menu button.</p></li>
36
37 <li><p>Log in as anonymous. The password is shown on screen.
38 The reason for requiring this login is to prevent spiders from
39 walking the entire website, downloading ZIP archives
40 of every historical version, and thereby soaking up all our bandwidth.</p></li>
41
42 <li><p>Click on the
43 <a href="http://www.fossil-scm.org/fossil/timeline">Timeline</a>
44 link at the top of the page.</p></li>
 
45
46 <li><p>Select a version of of fossil you want to download. Click on its
47 link. Note that you must successfully log in as "anonymous" in step 1
48 above in order to see the link to the detailed version information.</p></li>
49
@@ -56,13 +55,12 @@
55
56 <h2>2.0 Compiling</h2>
57
58 <ol>
59 <li value="6">
60 <p>Unpack the ZIP or tarball you downloaded into that directory then
61 <b>cd</b> into the directory created.</p></li>
 
62
63 <li><i>(Optional, unix only)</i>
64 Run <b>./configure</b> to construct a makefile.
65
66 <ol type="a">
67

Keyboard Shortcuts

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