Fossil SCM

Deleting a branch closes it

baruch 2015-01-28 11:07 svn-import
Commit 86ab1f468b0929fada525a74bbd580b3aa1dafe2
1 file changed +95 -66
+95 -66
--- src/import.c
+++ src/import.c
@@ -913,10 +913,12 @@
913913
914914
#define SVN_UNKNOWN 0
915915
#define SVN_TRUNK 1
916916
#define SVN_BRANCH 2
917917
#define SVN_TAG 3
918
+
919
+#define MAX_INT_32 (1<<31 - 1)
918920
919921
static void svn_finish_revision(){
920922
Blob manifest;
921923
static Stmt getChanges;
922924
static Stmt getFiles;
@@ -953,69 +955,84 @@
953955
parentRid);
954956
if( parentBranch!=branchId && branchType!=SVN_TAG ){
955957
sameAsParent = 0;
956958
}
957959
}
958
- if( gsvn.zComment ){
959
- blob_appendf(&manifest, "C %F\n", gsvn.zComment);
960
- }else{
961
- blob_append(&manifest, "C (no\\scomment)\n", 16);
962
- }
963
- blob_appendf(&manifest, "D %s\n", gsvn.zDate);
964
- db_bind_int(&getFiles, ":branch", branchId);
965
- while( db_step(&getFiles)==SQLITE_ROW ){
966
- const char *zFile = db_column_text(&getFiles, 0);
967
- const char *zUuid = db_column_text(&getFiles, 1);
968
- const char *zPerm = db_column_text(&getFiles, 2);
969
- blob_appendf(&manifest, "F %F %s%s\n", zFile, zUuid, zPerm);
970
- if( sameAsParent ){
971
- if( !pParentFile
972
- || fossil_strcmp(pParentFile->zName,zFile)!=0
973
- || fossil_strcmp(pParentFile->zUuid,zUuid)!=0
974
- || fossil_strcmp(pParentFile->zPerm,zPerm)!=0
975
- ){
976
- sameAsParent = 0;
977
- }else{
978
- pParentFile = manifest_file_next(pParentManifest, 0);
979
- }
980
- }
981
- }
982
- if( pParentFile ){
983
- sameAsParent = 0;
984
- }
985
- db_reset(&getFiles);
986
- if( !sameAsParent ){
987
- if( parentRid>0 ){
988
- char *zParentUuid = rid_to_uuid(parentRid);
989
- if( parentRid==mergeRid || mergeRid==0){
990
- char *zParentBranch =
991
- db_text(0, "SELECT tname FROM xbranches WHERE tid=%d",
992
- parentBranch
993
- );
994
- blob_appendf(&manifest, "P %s\n", zParentUuid);
995
- blob_appendf(&manifest, "T *branch * %F\n", zBranch);
996
- blob_appendf(&manifest, "T *sym-%F *\n", zBranch);
997
- blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
998
- blob_appendf(&manifest, "T -sym-%F *\n", zParentBranch);
999
- fossil_free(zParentBranch);
1000
- }else{
1001
- char *zMergeUuid = rid_to_uuid(mergeRid);
1002
- blob_appendf(&manifest, "P %s %s\n", zParentUuid, zMergeUuid);
1003
- blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
1004
- fossil_free(zMergeUuid);
1005
- }
1006
- fossil_free(zParentUuid);
1007
- }else{
1008
- blob_appendf(&manifest, "T *branch * %F\n", zBranch);
1009
- blob_appendf(&manifest, "T *sym-%F *\n", zBranch);
1010
- blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
1011
- }
1012
- }else if( branchType==SVN_TAG ){
1013
- char *zParentUuid = rid_to_uuid(parentRid);
1014
- blob_reset(&manifest);
1015
- blob_appendf(&manifest, "D %s\n", gsvn.zDate);
1016
- blob_appendf(&manifest, "T +sym-%F %s\n", zBranch, zParentUuid);
960
+ if( mergeRid<MAX_INT_32 ){
961
+ if( gsvn.zComment ){
962
+ blob_appendf(&manifest, "C %F\n", gsvn.zComment);
963
+ }else{
964
+ blob_append(&manifest, "C (no\\scomment)\n", 16);
965
+ }
966
+ blob_appendf(&manifest, "D %s\n", gsvn.zDate);
967
+ db_bind_int(&getFiles, ":branch", branchId);
968
+ while( db_step(&getFiles)==SQLITE_ROW ){
969
+ const char *zFile = db_column_text(&getFiles, 0);
970
+ const char *zUuid = db_column_text(&getFiles, 1);
971
+ const char *zPerm = db_column_text(&getFiles, 2);
972
+ if( zPerm ){
973
+ blob_appendf(&manifest, "F %F %s %s\n", zFile, zUuid, zPerm);
974
+ }else{
975
+ blob_appendf(&manifest, "F %F %s\n", zFile, zUuid);
976
+ }
977
+ if( sameAsParent ){
978
+ if( !pParentFile
979
+ || fossil_strcmp(pParentFile->zName,zFile)!=0
980
+ || fossil_strcmp(pParentFile->zUuid,zUuid)!=0
981
+ || fossil_strcmp(pParentFile->zPerm,zPerm)!=0
982
+ ){
983
+ sameAsParent = 0;
984
+ }else{
985
+ pParentFile = manifest_file_next(pParentManifest, 0);
986
+ }
987
+ }
988
+ }
989
+ if( pParentFile ){
990
+ sameAsParent = 0;
991
+ }
992
+ db_reset(&getFiles);
993
+ if( !sameAsParent ){
994
+ if( parentRid>0 ){
995
+ char *zParentUuid = rid_to_uuid(parentRid);
996
+ if( parentRid==mergeRid || mergeRid==0){
997
+ char *zParentBranch =
998
+ db_text(0, "SELECT tname FROM xbranches WHERE tid=%d",
999
+ parentBranch
1000
+ );
1001
+ blob_appendf(&manifest, "P %s\n", zParentUuid);
1002
+ blob_appendf(&manifest, "T *branch * %F\n", zBranch);
1003
+ blob_appendf(&manifest, "T *sym-%F *\n", zBranch);
1004
+ blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
1005
+ blob_appendf(&manifest, "T -sym-%F *\n", zParentBranch);
1006
+ fossil_free(zParentBranch);
1007
+ }else{
1008
+ char *zMergeUuid = rid_to_uuid(mergeRid);
1009
+ blob_appendf(&manifest, "P %s %s\n", zParentUuid, zMergeUuid);
1010
+ blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
1011
+ fossil_free(zMergeUuid);
1012
+ }
1013
+ fossil_free(zParentUuid);
1014
+ }else{
1015
+ blob_appendf(&manifest, "T *branch * %F\n", zBranch);
1016
+ blob_appendf(&manifest, "T *sym-%F *\n", zBranch);
1017
+ blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
1018
+ }
1019
+ }else if( branchType==SVN_TAG ){
1020
+ char *zParentUuid = rid_to_uuid(parentRid);
1021
+ blob_reset(&manifest);
1022
+ blob_appendf(&manifest, "D %s\n", gsvn.zDate);
1023
+ blob_appendf(&manifest, "T +sym-%F %s\n", zBranch, zParentUuid);
1024
+ fossil_free(zParentUuid);
1025
+ }
1026
+ }else{
1027
+ char *zParentUuid = rid_to_uuid(parentRid);
1028
+ blob_appendf(&manifest, "D %s\n", gsvn.zDate);
1029
+ if( branchType!=SVN_TAG ){
1030
+ blob_appendf(&manifest, "T +closed %s\n", zParentUuid);
1031
+ }else{
1032
+ blob_appendf(&manifest, "T -sym-%F %s\n", zBranch, zParentUuid);
1033
+ }
10171034
fossil_free(zParentUuid);
10181035
}
10191036
if( gsvn.zUser ){
10201037
blob_appendf(&manifest, "U %F\n", gsvn.zUser);
10211038
}else{
@@ -1035,10 +1052,14 @@
10351052
content_put(&manifest);
10361053
db_bind_int(&setRid, ":branch", branchId);
10371054
db_bind_int(&setRid, ":rid", parentRid);
10381055
db_step(&setRid);
10391056
db_reset(&setRid);
1057
+ }else if( mergeRid==MAX_INT_32 ){
1058
+ content_put(&manifest);
1059
+ db_multi_exec("DELETE FROM xrevisions WHERE tbranch=%d AND trev=%d",
1060
+ branchId, gsvn.rev);
10401061
}else{
10411062
db_multi_exec("DELETE FROM xrevisions WHERE tbranch=%d AND trev=%d",
10421063
branchId, gsvn.rev);
10431064
}
10441065
blob_reset(&manifest);
@@ -1193,11 +1214,11 @@
11931214
" VALUES(:path, :branch, (SELECT uuid FROM blob WHERE rid=:rid), :perm)"
11941215
);
11951216
db_prepare(&delPath,
11961217
"DELETE FROM xfiles"
11971218
" WHERE (tpath=:path OR (tpath>:path||'/' AND tpath<:path||'0'))"
1198
- " AND tbranch=:branch"
1219
+ " AND tbranch=:branch"
11991220
);
12001221
db_prepare(&addRev,
12011222
"INSERT OR IGNORE INTO xrevisions (trev, tbranch) VALUES(:rev, :branch)"
12021223
);
12031224
db_prepare(&cpyPath,
@@ -1248,11 +1269,11 @@
12481269
char *zFile;
12491270
int branchType;
12501271
int branchId = svn_parse_path(zTemp, &zFile, &branchType);
12511272
char *zAction = svn_find_header(rec, "Node-action");
12521273
char *zKind = svn_find_header(rec, "Node-kind");
1253
- char *zPerm = svn_find_prop(rec, "svn:executable") ? " x" : 0;
1274
+ char *zPerm = svn_find_prop(rec, "svn:executable") ? "x" : 0;
12541275
int deltaFlag = 0;
12551276
int srcRev = 0;
12561277
if( branchId==0 ){
12571278
svn_free_rec(&rec);
12581279
continue;
@@ -1261,18 +1282,26 @@
12611282
deltaFlag = strncmp(zTemp, "true", 4)==0;
12621283
}
12631284
if( strncmp(zAction, "delete", 6)==0
12641285
|| strncmp(zAction, "replace", 7)==0 )
12651286
{
1266
- //TODO delete root
1267
- db_bind_text(&delPath, ":path", zFile);
1268
- db_bind_int(&delPath, ":branch", branchId);
1269
- db_step(&delPath);
1270
- db_reset(&delPath);
12711287
db_bind_int(&addRev, ":branch", branchId);
12721288
db_step(&addRev);
12731289
db_reset(&addRev);
1290
+ if( zFile[0]!=0 ){
1291
+ db_bind_text(&delPath, ":path", zFile);
1292
+ db_bind_int(&delPath, ":branch", branchId);
1293
+ db_step(&delPath);
1294
+ db_reset(&delPath);
1295
+ }else{
1296
+ db_multi_exec("DELETE FROM xfiles WHERE tbranch=%d", branchId);
1297
+ db_bind_int(&revSrc, ":parent", MAX_INT_32);
1298
+ db_bind_int(&revSrc, ":rev", gsvn.rev);
1299
+ db_bind_int(&revSrc, ":branch", branchId);
1300
+ db_step(&revSrc);
1301
+ db_reset(&revSrc);
1302
+ }
12741303
} /* no 'else' here since 'replace' does both a 'delete' and an 'add' */
12751304
if( strncmp(zAction, "add", 3)==0
12761305
|| strncmp(zAction, "replace", 7)==0 )
12771306
{
12781307
char *zSrcPath = svn_find_header(rec, "Node-copyfrom-path");
12791308
--- src/import.c
+++ src/import.c
@@ -913,10 +913,12 @@
913
914 #define SVN_UNKNOWN 0
915 #define SVN_TRUNK 1
916 #define SVN_BRANCH 2
917 #define SVN_TAG 3
 
 
918
919 static void svn_finish_revision(){
920 Blob manifest;
921 static Stmt getChanges;
922 static Stmt getFiles;
@@ -953,69 +955,84 @@
953 parentRid);
954 if( parentBranch!=branchId && branchType!=SVN_TAG ){
955 sameAsParent = 0;
956 }
957 }
958 if( gsvn.zComment ){
959 blob_appendf(&manifest, "C %F\n", gsvn.zComment);
960 }else{
961 blob_append(&manifest, "C (no\\scomment)\n", 16);
962 }
963 blob_appendf(&manifest, "D %s\n", gsvn.zDate);
964 db_bind_int(&getFiles, ":branch", branchId);
965 while( db_step(&getFiles)==SQLITE_ROW ){
966 const char *zFile = db_column_text(&getFiles, 0);
967 const char *zUuid = db_column_text(&getFiles, 1);
968 const char *zPerm = db_column_text(&getFiles, 2);
969 blob_appendf(&manifest, "F %F %s%s\n", zFile, zUuid, zPerm);
970 if( sameAsParent ){
971 if( !pParentFile
972 || fossil_strcmp(pParentFile->zName,zFile)!=0
973 || fossil_strcmp(pParentFile->zUuid,zUuid)!=0
974 || fossil_strcmp(pParentFile->zPerm,zPerm)!=0
975 ){
976 sameAsParent = 0;
977 }else{
978 pParentFile = manifest_file_next(pParentManifest, 0);
979 }
980 }
981 }
982 if( pParentFile ){
983 sameAsParent = 0;
984 }
985 db_reset(&getFiles);
986 if( !sameAsParent ){
987 if( parentRid>0 ){
988 char *zParentUuid = rid_to_uuid(parentRid);
989 if( parentRid==mergeRid || mergeRid==0){
990 char *zParentBranch =
991 db_text(0, "SELECT tname FROM xbranches WHERE tid=%d",
992 parentBranch
993 );
994 blob_appendf(&manifest, "P %s\n", zParentUuid);
995 blob_appendf(&manifest, "T *branch * %F\n", zBranch);
996 blob_appendf(&manifest, "T *sym-%F *\n", zBranch);
997 blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
998 blob_appendf(&manifest, "T -sym-%F *\n", zParentBranch);
999 fossil_free(zParentBranch);
1000 }else{
1001 char *zMergeUuid = rid_to_uuid(mergeRid);
1002 blob_appendf(&manifest, "P %s %s\n", zParentUuid, zMergeUuid);
1003 blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
1004 fossil_free(zMergeUuid);
1005 }
1006 fossil_free(zParentUuid);
1007 }else{
1008 blob_appendf(&manifest, "T *branch * %F\n", zBranch);
1009 blob_appendf(&manifest, "T *sym-%F *\n", zBranch);
1010 blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
1011 }
1012 }else if( branchType==SVN_TAG ){
1013 char *zParentUuid = rid_to_uuid(parentRid);
1014 blob_reset(&manifest);
1015 blob_appendf(&manifest, "D %s\n", gsvn.zDate);
1016 blob_appendf(&manifest, "T +sym-%F %s\n", zBranch, zParentUuid);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1017 fossil_free(zParentUuid);
1018 }
1019 if( gsvn.zUser ){
1020 blob_appendf(&manifest, "U %F\n", gsvn.zUser);
1021 }else{
@@ -1035,10 +1052,14 @@
1035 content_put(&manifest);
1036 db_bind_int(&setRid, ":branch", branchId);
1037 db_bind_int(&setRid, ":rid", parentRid);
1038 db_step(&setRid);
1039 db_reset(&setRid);
 
 
 
 
1040 }else{
1041 db_multi_exec("DELETE FROM xrevisions WHERE tbranch=%d AND trev=%d",
1042 branchId, gsvn.rev);
1043 }
1044 blob_reset(&manifest);
@@ -1193,11 +1214,11 @@
1193 " VALUES(:path, :branch, (SELECT uuid FROM blob WHERE rid=:rid), :perm)"
1194 );
1195 db_prepare(&delPath,
1196 "DELETE FROM xfiles"
1197 " WHERE (tpath=:path OR (tpath>:path||'/' AND tpath<:path||'0'))"
1198 " AND tbranch=:branch"
1199 );
1200 db_prepare(&addRev,
1201 "INSERT OR IGNORE INTO xrevisions (trev, tbranch) VALUES(:rev, :branch)"
1202 );
1203 db_prepare(&cpyPath,
@@ -1248,11 +1269,11 @@
1248 char *zFile;
1249 int branchType;
1250 int branchId = svn_parse_path(zTemp, &zFile, &branchType);
1251 char *zAction = svn_find_header(rec, "Node-action");
1252 char *zKind = svn_find_header(rec, "Node-kind");
1253 char *zPerm = svn_find_prop(rec, "svn:executable") ? " x" : 0;
1254 int deltaFlag = 0;
1255 int srcRev = 0;
1256 if( branchId==0 ){
1257 svn_free_rec(&rec);
1258 continue;
@@ -1261,18 +1282,26 @@
1261 deltaFlag = strncmp(zTemp, "true", 4)==0;
1262 }
1263 if( strncmp(zAction, "delete", 6)==0
1264 || strncmp(zAction, "replace", 7)==0 )
1265 {
1266 //TODO delete root
1267 db_bind_text(&delPath, ":path", zFile);
1268 db_bind_int(&delPath, ":branch", branchId);
1269 db_step(&delPath);
1270 db_reset(&delPath);
1271 db_bind_int(&addRev, ":branch", branchId);
1272 db_step(&addRev);
1273 db_reset(&addRev);
 
 
 
 
 
 
 
 
 
 
 
 
 
1274 } /* no 'else' here since 'replace' does both a 'delete' and an 'add' */
1275 if( strncmp(zAction, "add", 3)==0
1276 || strncmp(zAction, "replace", 7)==0 )
1277 {
1278 char *zSrcPath = svn_find_header(rec, "Node-copyfrom-path");
1279
--- src/import.c
+++ src/import.c
@@ -913,10 +913,12 @@
913
914 #define SVN_UNKNOWN 0
915 #define SVN_TRUNK 1
916 #define SVN_BRANCH 2
917 #define SVN_TAG 3
918
919 #define MAX_INT_32 (1<<31 - 1)
920
921 static void svn_finish_revision(){
922 Blob manifest;
923 static Stmt getChanges;
924 static Stmt getFiles;
@@ -953,69 +955,84 @@
955 parentRid);
956 if( parentBranch!=branchId && branchType!=SVN_TAG ){
957 sameAsParent = 0;
958 }
959 }
960 if( mergeRid<MAX_INT_32 ){
961 if( gsvn.zComment ){
962 blob_appendf(&manifest, "C %F\n", gsvn.zComment);
963 }else{
964 blob_append(&manifest, "C (no\\scomment)\n", 16);
965 }
966 blob_appendf(&manifest, "D %s\n", gsvn.zDate);
967 db_bind_int(&getFiles, ":branch", branchId);
968 while( db_step(&getFiles)==SQLITE_ROW ){
969 const char *zFile = db_column_text(&getFiles, 0);
970 const char *zUuid = db_column_text(&getFiles, 1);
971 const char *zPerm = db_column_text(&getFiles, 2);
972 if( zPerm ){
973 blob_appendf(&manifest, "F %F %s %s\n", zFile, zUuid, zPerm);
974 }else{
975 blob_appendf(&manifest, "F %F %s\n", zFile, zUuid);
976 }
977 if( sameAsParent ){
978 if( !pParentFile
979 || fossil_strcmp(pParentFile->zName,zFile)!=0
980 || fossil_strcmp(pParentFile->zUuid,zUuid)!=0
981 || fossil_strcmp(pParentFile->zPerm,zPerm)!=0
982 ){
983 sameAsParent = 0;
984 }else{
985 pParentFile = manifest_file_next(pParentManifest, 0);
986 }
987 }
988 }
989 if( pParentFile ){
990 sameAsParent = 0;
991 }
992 db_reset(&getFiles);
993 if( !sameAsParent ){
994 if( parentRid>0 ){
995 char *zParentUuid = rid_to_uuid(parentRid);
996 if( parentRid==mergeRid || mergeRid==0){
997 char *zParentBranch =
998 db_text(0, "SELECT tname FROM xbranches WHERE tid=%d",
999 parentBranch
1000 );
1001 blob_appendf(&manifest, "P %s\n", zParentUuid);
1002 blob_appendf(&manifest, "T *branch * %F\n", zBranch);
1003 blob_appendf(&manifest, "T *sym-%F *\n", zBranch);
1004 blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
1005 blob_appendf(&manifest, "T -sym-%F *\n", zParentBranch);
1006 fossil_free(zParentBranch);
1007 }else{
1008 char *zMergeUuid = rid_to_uuid(mergeRid);
1009 blob_appendf(&manifest, "P %s %s\n", zParentUuid, zMergeUuid);
1010 blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
1011 fossil_free(zMergeUuid);
1012 }
1013 fossil_free(zParentUuid);
1014 }else{
1015 blob_appendf(&manifest, "T *branch * %F\n", zBranch);
1016 blob_appendf(&manifest, "T *sym-%F *\n", zBranch);
1017 blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", gsvn.rev);
1018 }
1019 }else if( branchType==SVN_TAG ){
1020 char *zParentUuid = rid_to_uuid(parentRid);
1021 blob_reset(&manifest);
1022 blob_appendf(&manifest, "D %s\n", gsvn.zDate);
1023 blob_appendf(&manifest, "T +sym-%F %s\n", zBranch, zParentUuid);
1024 fossil_free(zParentUuid);
1025 }
1026 }else{
1027 char *zParentUuid = rid_to_uuid(parentRid);
1028 blob_appendf(&manifest, "D %s\n", gsvn.zDate);
1029 if( branchType!=SVN_TAG ){
1030 blob_appendf(&manifest, "T +closed %s\n", zParentUuid);
1031 }else{
1032 blob_appendf(&manifest, "T -sym-%F %s\n", zBranch, zParentUuid);
1033 }
1034 fossil_free(zParentUuid);
1035 }
1036 if( gsvn.zUser ){
1037 blob_appendf(&manifest, "U %F\n", gsvn.zUser);
1038 }else{
@@ -1035,10 +1052,14 @@
1052 content_put(&manifest);
1053 db_bind_int(&setRid, ":branch", branchId);
1054 db_bind_int(&setRid, ":rid", parentRid);
1055 db_step(&setRid);
1056 db_reset(&setRid);
1057 }else if( mergeRid==MAX_INT_32 ){
1058 content_put(&manifest);
1059 db_multi_exec("DELETE FROM xrevisions WHERE tbranch=%d AND trev=%d",
1060 branchId, gsvn.rev);
1061 }else{
1062 db_multi_exec("DELETE FROM xrevisions WHERE tbranch=%d AND trev=%d",
1063 branchId, gsvn.rev);
1064 }
1065 blob_reset(&manifest);
@@ -1193,11 +1214,11 @@
1214 " VALUES(:path, :branch, (SELECT uuid FROM blob WHERE rid=:rid), :perm)"
1215 );
1216 db_prepare(&delPath,
1217 "DELETE FROM xfiles"
1218 " WHERE (tpath=:path OR (tpath>:path||'/' AND tpath<:path||'0'))"
1219 " AND tbranch=:branch"
1220 );
1221 db_prepare(&addRev,
1222 "INSERT OR IGNORE INTO xrevisions (trev, tbranch) VALUES(:rev, :branch)"
1223 );
1224 db_prepare(&cpyPath,
@@ -1248,11 +1269,11 @@
1269 char *zFile;
1270 int branchType;
1271 int branchId = svn_parse_path(zTemp, &zFile, &branchType);
1272 char *zAction = svn_find_header(rec, "Node-action");
1273 char *zKind = svn_find_header(rec, "Node-kind");
1274 char *zPerm = svn_find_prop(rec, "svn:executable") ? "x" : 0;
1275 int deltaFlag = 0;
1276 int srcRev = 0;
1277 if( branchId==0 ){
1278 svn_free_rec(&rec);
1279 continue;
@@ -1261,18 +1282,26 @@
1282 deltaFlag = strncmp(zTemp, "true", 4)==0;
1283 }
1284 if( strncmp(zAction, "delete", 6)==0
1285 || strncmp(zAction, "replace", 7)==0 )
1286 {
 
 
 
 
 
1287 db_bind_int(&addRev, ":branch", branchId);
1288 db_step(&addRev);
1289 db_reset(&addRev);
1290 if( zFile[0]!=0 ){
1291 db_bind_text(&delPath, ":path", zFile);
1292 db_bind_int(&delPath, ":branch", branchId);
1293 db_step(&delPath);
1294 db_reset(&delPath);
1295 }else{
1296 db_multi_exec("DELETE FROM xfiles WHERE tbranch=%d", branchId);
1297 db_bind_int(&revSrc, ":parent", MAX_INT_32);
1298 db_bind_int(&revSrc, ":rev", gsvn.rev);
1299 db_bind_int(&revSrc, ":branch", branchId);
1300 db_step(&revSrc);
1301 db_reset(&revSrc);
1302 }
1303 } /* no 'else' here since 'replace' does both a 'delete' and an 'add' */
1304 if( strncmp(zAction, "add", 3)==0
1305 || strncmp(zAction, "replace", 7)==0 )
1306 {
1307 char *zSrcPath = svn_find_header(rec, "Node-copyfrom-path");
1308

Keyboard Shortcuts

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