Fossil SCM

add support for tags

baruch 2014-10-27 08:19 UTC svn-import
Commit 2889cdc36df4a4a29b7174d7980ad3bb434f3ae7
1 file changed +50 -22
+50 -22
--- src/import.c
+++ src/import.c
@@ -882,34 +882,34 @@
882882
static void svn_create_manifests(int flatFlag){
883883
Blob manifest;
884884
Stmt qRev;
885885
Stmt qParent;
886886
Stmt qFiles;
887
+ Stmt qTags;
887888
Stmt setUuid;
888889
889890
if( !flatFlag ){
890891
db_multi_exec("DELETE FROM xrevisions WHERE tbranch ISNULL;"
891
- ""
892
- " WITH xprefix AS ( "
892
+ "UPDATE xrevisions SET tparent=("
893
+ " SELECT ifnull(max(trev),-1) FROM xrevisions t"
894
+ " WHERE t.trev<xrevisions.trev"
895
+ " AND t.tbranch=xrevisions.tbranch"
896
+ " )"
897
+ " WHERE tparent ISNULL;"
898
+ "WITH xprefix AS ( "
893899
" SELECT trev, CASE tbranch WHEN 'trunk' THEN 'trunk/'"
894900
" ELSE 'branches/'||tbranch||'/' END xpref"
895901
" FROM xrevisions"
896902
" ), "
897903
" x AS (SELECT trev xrev, xpref, length(xpref) xlen "
898904
" FROM xprefix) "
899
- "UPDATE xfiles SET tpath= "
905
+ " UPDATE xfiles SET tpath= "
900906
" CASE substr(tpath,1,(SELECT xlen FROM x WHERE xrev=trev))"
901907
" WHEN (SELECT xpref FROM x WHERE xrev=trev)"
902908
" THEN substr(tpath,(SELECT xlen FROM x WHERE xrev=trev)+1)"
903909
" END;"
904
- "DELETE FROM xfiles WHERE tpath ISNULL;"
905
- "UPDATE xrevisions SET tparent=("
906
- " SELECT ifnull(max(trev),-1) FROM xrevisions t"
907
- " WHERE t.trev<xrevisions.trev"
908
- " AND t.tbranch=xrevisions.tbranch"
909
- " )"
910
- " WHERE tparent ISNULL");
910
+ "DELETE FROM xfiles WHERE tpath ISNULL");
911911
}else{
912912
db_multi_exec("UPDATE xrevisions SET tparent=trev-1");
913913
}
914914
db_prepare(&qRev, "SELECT trev, tuser, tmsg, ttime, tparent, tbranch"
915915
" FROM xrevisions "
@@ -916,10 +916,11 @@
916916
" ORDER BY trev");
917917
db_prepare(&qParent, "SELECT tuuid, tbranch FROM xrevisions WHERE trev=:rev");
918918
db_prepare(&qFiles, "SELECT tpath, uuid, tperm"
919919
" FROM xfiles JOIN blob ON xfiles.trid=blob.rid"
920920
" WHERE trev=:rev ORDER BY tpath");
921
+ db_prepare(&qTags, "SELECT ttag FROM xtags WHERE trev=:rev");
921922
db_prepare(&setUuid, "UPDATE xrevisions"
922923
" SET tuuid=(SELECT uuid FROM blob WHERE rid=:rid)"
923924
" WHERE trev=:rev");
924925
blob_zero(&manifest);
925926
while( db_step(&qRev)==SQLITE_ROW ){
@@ -928,13 +929,12 @@
928929
const char *zMsg = db_column_text(&qRev, 2);
929930
const char *zTime = db_column_text(&qRev, 3);
930931
int parentRev = db_column_int(&qRev, 4);
931932
const char *zBranch = db_column_text(&qRev, 5);
932933
int rid;
933
- Blob mcksum;
934
- const char *zParentUuid = 0;
935934
const char *zParentBranch = 0;
935
+ Blob mcksum;
936936
blob_reset(&manifest);
937937
if( zMsg ){
938938
blob_appendf(&manifest, "C %F\n", zMsg);
939939
}else{
940940
blob_append(&manifest, "C (no\\scomment)\n", 16);
@@ -947,27 +947,40 @@
947947
const char *zPerm = db_column_text(&qFiles, 2);
948948
blob_appendf(&manifest, "F %F %s %s\n", zFile, zUuid, zPerm);
949949
}
950950
db_reset(&qFiles);
951951
if( parentRev>=0 ){
952
+ const char *zParentUuid;
952953
db_bind_int(&qParent, ":rev", parentRev);
953954
db_step(&qParent);
954955
zParentUuid = db_column_text(&qParent, 0);
955956
blob_appendf(&manifest, "P %s\n", zParentUuid);
956957
if( !flatFlag ){
957958
zParentBranch = db_column_text(&qParent, 1);
958959
if( strcmp(zBranch, zParentBranch)!=0 ){
959960
blob_appendf(&manifest, "T *branch * %s\n", zBranch);
960961
blob_appendf(&manifest, "T *sym-%s *\n", zBranch);
962
+ zParentBranch = mprintf("%s", zParentBranch);
963
+ }else{
964
+ zParentBranch = 0;
961965
}
962966
}
963967
db_reset(&qParent);
964968
}else{
965969
blob_appendf(&manifest, "T *branch * trunk\n");
966970
blob_appendf(&manifest, "T *sym-trunk *\n");
967971
}
972
+ db_bind_int(&qTags, ":rev", rev);
973
+ while( db_step(&qTags)==SQLITE_ROW ){
974
+ const char *zTag = db_column_text(&qTags, 0);
975
+ blob_appendf(&manifest, "T +sym-%s *\n", zTag);
976
+ }
977
+ db_reset(&qTags);
968978
blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", rev);
979
+ if( zParentBranch ) {
980
+ blob_appendf(&manifest, "T -sym-%s *\n", zParentBranch);
981
+ }
969982
if( zUser ){
970983
blob_appendf(&manifest, "U %F\n", zUser);
971984
}else{
972985
const char *zUserOvrd = find_option("user-override",0,1);
973986
blob_appendf(&manifest, "U %F\n",
@@ -984,10 +997,11 @@
984997
db_reset(&setUuid);
985998
}
986999
db_finalize(&qRev);
9871000
db_finalize(&qParent);
9881001
db_finalize(&qFiles);
1002
+ db_finalize(&qTags);
9891003
db_finalize(&setUuid);
9901004
}
9911005
/*
9921006
** Read the svn-dump format from pIn and insert the corresponding
9931007
** content into the database.
@@ -998,10 +1012,11 @@
9981012
const char *zTemp;
9991013
const char *zUuid;
10001014
char zBranch[200] = {0};
10011015
Stmt insRev;
10021016
Stmt insFile;
1017
+ Stmt insTag;
10031018
Stmt delFile;
10041019
Stmt setBranch;
10051020
Stmt setParent;
10061021
int rev = 0;
10071022
@@ -1028,10 +1043,11 @@
10281043
);
10291044
db_prepare(&insFile,
10301045
"INSERT INTO xfiles (trev, tpath, trid, tperm) "
10311046
"VALUES(:rev, :path, :rid, :perm)"
10321047
);
1048
+ db_prepare(&insTag, "INSERT INTO xtags (trev, ttag) VALUES(:rev, :tag)");
10331049
db_prepare(&delFile,
10341050
"DELETE FROM xfiles "
10351051
"WHERE trev=:rev "
10361052
" AND (tpath=:path OR (tpath>:path||'/' AND tpath<:path||'0'))"
10371053
);
@@ -1120,18 +1136,26 @@
11201136
" SELECT %d, %Q||substr(tpath, length(%Q)+1), trid, tperm "
11211137
" FROM xfiles "
11221138
" WHERE trev=%d AND tpath GLOB '%q/*'",
11231139
rev, zPath, zSrcPath, srcRev, zSrcPath
11241140
);
1125
- if( !flatFlag && strncmp(zPath, "branches/", 9)==0 ){
1126
- zTemp = zPath+9;
1127
- while( *zTemp && *zTemp!='/' ){ zTemp++; }
1128
- if( *zTemp==0 ){
1129
- db_bind_int(&setParent, ":parent", srcRev);
1130
- db_bind_int(&setParent, ":rev", rev);
1131
- db_step(&setParent);
1132
- db_reset(&setParent);
1141
+ if( !flatFlag ){
1142
+ if( strncmp(zPath, "branches/", 9)==0 ){
1143
+ zTemp = zPath+9;
1144
+ while( *zTemp && *zTemp!='/' ){ zTemp++; }
1145
+ if( *zTemp==0 ){
1146
+ db_bind_int(&setParent, ":parent", srcRev);
1147
+ db_bind_int(&setParent, ":rev", rev);
1148
+ db_step(&setParent);
1149
+ db_reset(&setParent);
1150
+ }
1151
+ }else if( strncmp(zPath, "tags/", 5)==0 ){
1152
+ zTemp = zPath+5;
1153
+ db_bind_int(&insTag, ":rev", srcRev);
1154
+ db_bind_text(&insTag, ":tag", zTemp);
1155
+ db_step(&insTag);
1156
+ db_reset(&insTag);
11331157
}
11341158
}
11351159
}
11361160
}else{
11371161
if( blob_size(&rec.content)==0 && zSrcPath ){
@@ -1174,10 +1198,11 @@
11741198
db_step(&setBranch);
11751199
}
11761200
}
11771201
db_finalize(&insRev);
11781202
db_finalize(&insFile);
1203
+ db_finalize(&insTag);
11791204
db_finalize(&delFile);
11801205
db_finalize(&setBranch);
11811206
db_finalize(&setParent);
11821207
svn_create_manifests(flatFlag);
11831208
}
@@ -1274,16 +1299,19 @@
12741299
db_finalize(&q);
12751300
}else
12761301
if( strncmp(g.argv[2], "svn", 3)==0 ){
12771302
db_multi_exec(
12781303
"CREATE TEMP TABLE xrevisions("
1279
- " trev INT, tuser TEXT, tmsg TEXT, ttime DATETIME, tparent INT,"
1280
- " tbranch TEXT, tuuid TEXT"
1304
+ " trev INTEGER PRIMARY KEY, tuser TEXT, tmsg TEXT, ttime DATETIME,"
1305
+ " tparent INT, tbranch TEXT, tuuid TEXT"
12811306
");"
12821307
"CREATE TEMP TABLE xfiles("
12831308
" trev INT, tpath TEXT, trid TEXT, tperm TEXT,"
12841309
" UNIQUE (trev, tpath) ON CONFLICT REPLACE"
1310
+ ");"
1311
+ "CREATE TEMP TABLE xtags("
1312
+ " trev INT, ttag TEXT"
12851313
");"
12861314
);
12871315
svn_dump_import(pIn, flatFlag);
12881316
}
12891317
12901318
--- src/import.c
+++ src/import.c
@@ -882,34 +882,34 @@
882 static void svn_create_manifests(int flatFlag){
883 Blob manifest;
884 Stmt qRev;
885 Stmt qParent;
886 Stmt qFiles;
 
887 Stmt setUuid;
888
889 if( !flatFlag ){
890 db_multi_exec("DELETE FROM xrevisions WHERE tbranch ISNULL;"
891 ""
892 " WITH xprefix AS ( "
 
 
 
 
 
893 " SELECT trev, CASE tbranch WHEN 'trunk' THEN 'trunk/'"
894 " ELSE 'branches/'||tbranch||'/' END xpref"
895 " FROM xrevisions"
896 " ), "
897 " x AS (SELECT trev xrev, xpref, length(xpref) xlen "
898 " FROM xprefix) "
899 "UPDATE xfiles SET tpath= "
900 " CASE substr(tpath,1,(SELECT xlen FROM x WHERE xrev=trev))"
901 " WHEN (SELECT xpref FROM x WHERE xrev=trev)"
902 " THEN substr(tpath,(SELECT xlen FROM x WHERE xrev=trev)+1)"
903 " END;"
904 "DELETE FROM xfiles WHERE tpath ISNULL;"
905 "UPDATE xrevisions SET tparent=("
906 " SELECT ifnull(max(trev),-1) FROM xrevisions t"
907 " WHERE t.trev<xrevisions.trev"
908 " AND t.tbranch=xrevisions.tbranch"
909 " )"
910 " WHERE tparent ISNULL");
911 }else{
912 db_multi_exec("UPDATE xrevisions SET tparent=trev-1");
913 }
914 db_prepare(&qRev, "SELECT trev, tuser, tmsg, ttime, tparent, tbranch"
915 " FROM xrevisions "
@@ -916,10 +916,11 @@
916 " ORDER BY trev");
917 db_prepare(&qParent, "SELECT tuuid, tbranch FROM xrevisions WHERE trev=:rev");
918 db_prepare(&qFiles, "SELECT tpath, uuid, tperm"
919 " FROM xfiles JOIN blob ON xfiles.trid=blob.rid"
920 " WHERE trev=:rev ORDER BY tpath");
 
921 db_prepare(&setUuid, "UPDATE xrevisions"
922 " SET tuuid=(SELECT uuid FROM blob WHERE rid=:rid)"
923 " WHERE trev=:rev");
924 blob_zero(&manifest);
925 while( db_step(&qRev)==SQLITE_ROW ){
@@ -928,13 +929,12 @@
928 const char *zMsg = db_column_text(&qRev, 2);
929 const char *zTime = db_column_text(&qRev, 3);
930 int parentRev = db_column_int(&qRev, 4);
931 const char *zBranch = db_column_text(&qRev, 5);
932 int rid;
933 Blob mcksum;
934 const char *zParentUuid = 0;
935 const char *zParentBranch = 0;
 
936 blob_reset(&manifest);
937 if( zMsg ){
938 blob_appendf(&manifest, "C %F\n", zMsg);
939 }else{
940 blob_append(&manifest, "C (no\\scomment)\n", 16);
@@ -947,27 +947,40 @@
947 const char *zPerm = db_column_text(&qFiles, 2);
948 blob_appendf(&manifest, "F %F %s %s\n", zFile, zUuid, zPerm);
949 }
950 db_reset(&qFiles);
951 if( parentRev>=0 ){
 
952 db_bind_int(&qParent, ":rev", parentRev);
953 db_step(&qParent);
954 zParentUuid = db_column_text(&qParent, 0);
955 blob_appendf(&manifest, "P %s\n", zParentUuid);
956 if( !flatFlag ){
957 zParentBranch = db_column_text(&qParent, 1);
958 if( strcmp(zBranch, zParentBranch)!=0 ){
959 blob_appendf(&manifest, "T *branch * %s\n", zBranch);
960 blob_appendf(&manifest, "T *sym-%s *\n", zBranch);
 
 
 
961 }
962 }
963 db_reset(&qParent);
964 }else{
965 blob_appendf(&manifest, "T *branch * trunk\n");
966 blob_appendf(&manifest, "T *sym-trunk *\n");
967 }
 
 
 
 
 
 
968 blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", rev);
 
 
 
969 if( zUser ){
970 blob_appendf(&manifest, "U %F\n", zUser);
971 }else{
972 const char *zUserOvrd = find_option("user-override",0,1);
973 blob_appendf(&manifest, "U %F\n",
@@ -984,10 +997,11 @@
984 db_reset(&setUuid);
985 }
986 db_finalize(&qRev);
987 db_finalize(&qParent);
988 db_finalize(&qFiles);
 
989 db_finalize(&setUuid);
990 }
991 /*
992 ** Read the svn-dump format from pIn and insert the corresponding
993 ** content into the database.
@@ -998,10 +1012,11 @@
998 const char *zTemp;
999 const char *zUuid;
1000 char zBranch[200] = {0};
1001 Stmt insRev;
1002 Stmt insFile;
 
1003 Stmt delFile;
1004 Stmt setBranch;
1005 Stmt setParent;
1006 int rev = 0;
1007
@@ -1028,10 +1043,11 @@
1028 );
1029 db_prepare(&insFile,
1030 "INSERT INTO xfiles (trev, tpath, trid, tperm) "
1031 "VALUES(:rev, :path, :rid, :perm)"
1032 );
 
1033 db_prepare(&delFile,
1034 "DELETE FROM xfiles "
1035 "WHERE trev=:rev "
1036 " AND (tpath=:path OR (tpath>:path||'/' AND tpath<:path||'0'))"
1037 );
@@ -1120,18 +1136,26 @@
1120 " SELECT %d, %Q||substr(tpath, length(%Q)+1), trid, tperm "
1121 " FROM xfiles "
1122 " WHERE trev=%d AND tpath GLOB '%q/*'",
1123 rev, zPath, zSrcPath, srcRev, zSrcPath
1124 );
1125 if( !flatFlag && strncmp(zPath, "branches/", 9)==0 ){
1126 zTemp = zPath+9;
1127 while( *zTemp && *zTemp!='/' ){ zTemp++; }
1128 if( *zTemp==0 ){
1129 db_bind_int(&setParent, ":parent", srcRev);
1130 db_bind_int(&setParent, ":rev", rev);
1131 db_step(&setParent);
1132 db_reset(&setParent);
 
 
 
 
 
 
 
 
1133 }
1134 }
1135 }
1136 }else{
1137 if( blob_size(&rec.content)==0 && zSrcPath ){
@@ -1174,10 +1198,11 @@
1174 db_step(&setBranch);
1175 }
1176 }
1177 db_finalize(&insRev);
1178 db_finalize(&insFile);
 
1179 db_finalize(&delFile);
1180 db_finalize(&setBranch);
1181 db_finalize(&setParent);
1182 svn_create_manifests(flatFlag);
1183 }
@@ -1274,16 +1299,19 @@
1274 db_finalize(&q);
1275 }else
1276 if( strncmp(g.argv[2], "svn", 3)==0 ){
1277 db_multi_exec(
1278 "CREATE TEMP TABLE xrevisions("
1279 " trev INT, tuser TEXT, tmsg TEXT, ttime DATETIME, tparent INT,"
1280 " tbranch TEXT, tuuid TEXT"
1281 ");"
1282 "CREATE TEMP TABLE xfiles("
1283 " trev INT, tpath TEXT, trid TEXT, tperm TEXT,"
1284 " UNIQUE (trev, tpath) ON CONFLICT REPLACE"
 
 
 
1285 ");"
1286 );
1287 svn_dump_import(pIn, flatFlag);
1288 }
1289
1290
--- src/import.c
+++ src/import.c
@@ -882,34 +882,34 @@
882 static void svn_create_manifests(int flatFlag){
883 Blob manifest;
884 Stmt qRev;
885 Stmt qParent;
886 Stmt qFiles;
887 Stmt qTags;
888 Stmt setUuid;
889
890 if( !flatFlag ){
891 db_multi_exec("DELETE FROM xrevisions WHERE tbranch ISNULL;"
892 "UPDATE xrevisions SET tparent=("
893 " SELECT ifnull(max(trev),-1) FROM xrevisions t"
894 " WHERE t.trev<xrevisions.trev"
895 " AND t.tbranch=xrevisions.tbranch"
896 " )"
897 " WHERE tparent ISNULL;"
898 "WITH xprefix AS ( "
899 " SELECT trev, CASE tbranch WHEN 'trunk' THEN 'trunk/'"
900 " ELSE 'branches/'||tbranch||'/' END xpref"
901 " FROM xrevisions"
902 " ), "
903 " x AS (SELECT trev xrev, xpref, length(xpref) xlen "
904 " FROM xprefix) "
905 " UPDATE xfiles SET tpath= "
906 " CASE substr(tpath,1,(SELECT xlen FROM x WHERE xrev=trev))"
907 " WHEN (SELECT xpref FROM x WHERE xrev=trev)"
908 " THEN substr(tpath,(SELECT xlen FROM x WHERE xrev=trev)+1)"
909 " END;"
910 "DELETE FROM xfiles WHERE tpath ISNULL");
 
 
 
 
 
 
911 }else{
912 db_multi_exec("UPDATE xrevisions SET tparent=trev-1");
913 }
914 db_prepare(&qRev, "SELECT trev, tuser, tmsg, ttime, tparent, tbranch"
915 " FROM xrevisions "
@@ -916,10 +916,11 @@
916 " ORDER BY trev");
917 db_prepare(&qParent, "SELECT tuuid, tbranch FROM xrevisions WHERE trev=:rev");
918 db_prepare(&qFiles, "SELECT tpath, uuid, tperm"
919 " FROM xfiles JOIN blob ON xfiles.trid=blob.rid"
920 " WHERE trev=:rev ORDER BY tpath");
921 db_prepare(&qTags, "SELECT ttag FROM xtags WHERE trev=:rev");
922 db_prepare(&setUuid, "UPDATE xrevisions"
923 " SET tuuid=(SELECT uuid FROM blob WHERE rid=:rid)"
924 " WHERE trev=:rev");
925 blob_zero(&manifest);
926 while( db_step(&qRev)==SQLITE_ROW ){
@@ -928,13 +929,12 @@
929 const char *zMsg = db_column_text(&qRev, 2);
930 const char *zTime = db_column_text(&qRev, 3);
931 int parentRev = db_column_int(&qRev, 4);
932 const char *zBranch = db_column_text(&qRev, 5);
933 int rid;
 
 
934 const char *zParentBranch = 0;
935 Blob mcksum;
936 blob_reset(&manifest);
937 if( zMsg ){
938 blob_appendf(&manifest, "C %F\n", zMsg);
939 }else{
940 blob_append(&manifest, "C (no\\scomment)\n", 16);
@@ -947,27 +947,40 @@
947 const char *zPerm = db_column_text(&qFiles, 2);
948 blob_appendf(&manifest, "F %F %s %s\n", zFile, zUuid, zPerm);
949 }
950 db_reset(&qFiles);
951 if( parentRev>=0 ){
952 const char *zParentUuid;
953 db_bind_int(&qParent, ":rev", parentRev);
954 db_step(&qParent);
955 zParentUuid = db_column_text(&qParent, 0);
956 blob_appendf(&manifest, "P %s\n", zParentUuid);
957 if( !flatFlag ){
958 zParentBranch = db_column_text(&qParent, 1);
959 if( strcmp(zBranch, zParentBranch)!=0 ){
960 blob_appendf(&manifest, "T *branch * %s\n", zBranch);
961 blob_appendf(&manifest, "T *sym-%s *\n", zBranch);
962 zParentBranch = mprintf("%s", zParentBranch);
963 }else{
964 zParentBranch = 0;
965 }
966 }
967 db_reset(&qParent);
968 }else{
969 blob_appendf(&manifest, "T *branch * trunk\n");
970 blob_appendf(&manifest, "T *sym-trunk *\n");
971 }
972 db_bind_int(&qTags, ":rev", rev);
973 while( db_step(&qTags)==SQLITE_ROW ){
974 const char *zTag = db_column_text(&qTags, 0);
975 blob_appendf(&manifest, "T +sym-%s *\n", zTag);
976 }
977 db_reset(&qTags);
978 blob_appendf(&manifest, "T +sym-svn-rev-%d *\n", rev);
979 if( zParentBranch ) {
980 blob_appendf(&manifest, "T -sym-%s *\n", zParentBranch);
981 }
982 if( zUser ){
983 blob_appendf(&manifest, "U %F\n", zUser);
984 }else{
985 const char *zUserOvrd = find_option("user-override",0,1);
986 blob_appendf(&manifest, "U %F\n",
@@ -984,10 +997,11 @@
997 db_reset(&setUuid);
998 }
999 db_finalize(&qRev);
1000 db_finalize(&qParent);
1001 db_finalize(&qFiles);
1002 db_finalize(&qTags);
1003 db_finalize(&setUuid);
1004 }
1005 /*
1006 ** Read the svn-dump format from pIn and insert the corresponding
1007 ** content into the database.
@@ -998,10 +1012,11 @@
1012 const char *zTemp;
1013 const char *zUuid;
1014 char zBranch[200] = {0};
1015 Stmt insRev;
1016 Stmt insFile;
1017 Stmt insTag;
1018 Stmt delFile;
1019 Stmt setBranch;
1020 Stmt setParent;
1021 int rev = 0;
1022
@@ -1028,10 +1043,11 @@
1043 );
1044 db_prepare(&insFile,
1045 "INSERT INTO xfiles (trev, tpath, trid, tperm) "
1046 "VALUES(:rev, :path, :rid, :perm)"
1047 );
1048 db_prepare(&insTag, "INSERT INTO xtags (trev, ttag) VALUES(:rev, :tag)");
1049 db_prepare(&delFile,
1050 "DELETE FROM xfiles "
1051 "WHERE trev=:rev "
1052 " AND (tpath=:path OR (tpath>:path||'/' AND tpath<:path||'0'))"
1053 );
@@ -1120,18 +1136,26 @@
1136 " SELECT %d, %Q||substr(tpath, length(%Q)+1), trid, tperm "
1137 " FROM xfiles "
1138 " WHERE trev=%d AND tpath GLOB '%q/*'",
1139 rev, zPath, zSrcPath, srcRev, zSrcPath
1140 );
1141 if( !flatFlag ){
1142 if( strncmp(zPath, "branches/", 9)==0 ){
1143 zTemp = zPath+9;
1144 while( *zTemp && *zTemp!='/' ){ zTemp++; }
1145 if( *zTemp==0 ){
1146 db_bind_int(&setParent, ":parent", srcRev);
1147 db_bind_int(&setParent, ":rev", rev);
1148 db_step(&setParent);
1149 db_reset(&setParent);
1150 }
1151 }else if( strncmp(zPath, "tags/", 5)==0 ){
1152 zTemp = zPath+5;
1153 db_bind_int(&insTag, ":rev", srcRev);
1154 db_bind_text(&insTag, ":tag", zTemp);
1155 db_step(&insTag);
1156 db_reset(&insTag);
1157 }
1158 }
1159 }
1160 }else{
1161 if( blob_size(&rec.content)==0 && zSrcPath ){
@@ -1174,10 +1198,11 @@
1198 db_step(&setBranch);
1199 }
1200 }
1201 db_finalize(&insRev);
1202 db_finalize(&insFile);
1203 db_finalize(&insTag);
1204 db_finalize(&delFile);
1205 db_finalize(&setBranch);
1206 db_finalize(&setParent);
1207 svn_create_manifests(flatFlag);
1208 }
@@ -1274,16 +1299,19 @@
1299 db_finalize(&q);
1300 }else
1301 if( strncmp(g.argv[2], "svn", 3)==0 ){
1302 db_multi_exec(
1303 "CREATE TEMP TABLE xrevisions("
1304 " trev INTEGER PRIMARY KEY, tuser TEXT, tmsg TEXT, ttime DATETIME,"
1305 " tparent INT, tbranch TEXT, tuuid TEXT"
1306 ");"
1307 "CREATE TEMP TABLE xfiles("
1308 " trev INT, tpath TEXT, trid TEXT, tperm TEXT,"
1309 " UNIQUE (trev, tpath) ON CONFLICT REPLACE"
1310 ");"
1311 "CREATE TEMP TABLE xtags("
1312 " trev INT, ttag TEXT"
1313 ");"
1314 );
1315 svn_dump_import(pIn, flatFlag);
1316 }
1317
1318

Keyboard Shortcuts

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