Differences From:
File
src/manifest.c
part of check-in
[2ad378d065]
- Branching now working correctly, including adding of bgcolor tag and correct R line
by
jnc on
2007-09-23 15:02:58.
[view]
To:
File
src/manifest.c
part of check-in
[913608a5a6]
- Fix some problems with tag propagation. More problems remain.
by
drh on
2007-09-25 03:14:30.
[view]
@@ -516,8 +516,9 @@
int manifest_crosslink(int rid, Blob *pContent){
int i;
Manifest m;
Stmt q;
+ int parentid = 0;
if( manifest_parse(&m, pContent)==0 ){
return 0;
}
@@ -529,8 +530,9 @@
db_multi_exec("INSERT OR IGNORE INTO plink(pid, cid, isprim, mtime)"
"VALUES(%d, %d, %d, %.17g)", pid, rid, i==0, m.rDate);
if( i==0 ){
add_mlink(pid, 0, rid, &m);
+ parentid = pid;
}
}
db_prepare(&q, "SELECT cid FROM plink WHERE pid=%d AND isprim", rid);
while( db_step(&q)==SQLITE_ROW ){
@@ -565,10 +567,17 @@
case '-': type = 0; break;
}
tag_insert(&m.aTag[i].zName[1], type, m.aTag[i].zValue,
rid, m.rDate, tid);
+ if( tid!=rid ){
+ tag_propagate_all(tid);
+ }
+ }
+ if( parentid ){
+ tag_propagate_all(parentid);
}
+ tag_propagate_all(rid);
}
db_end_transaction(0);
manifest_clear(&m);
return 1;
}