Fossil SCM

Omit MLINK entries when a file is added by merge.

drh 2015-01-26 11:52 UTC mlink-improvements
Commit bd08b03a72410c4888b1a994ef17ec09d051d26a
2 files changed +2 -2 +13
+2 -2
--- src/finfo.c
+++ src/finfo.c
@@ -333,11 +333,11 @@
333333
" (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */
334334
" (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */
335335
" (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */
336336
" event.bgcolor," /* Background color */
337337
" (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0"
338
- " AND tagxref.rid=mlink.mid)," /* Tags */
338
+ " AND tagxref.rid=mlink.mid)," /* Branchname */
339339
" mlink.mid," /* check-in ID */
340340
" mlink.pfnid", /* Previous filename */
341341
timeline_utc(), TAG_BRANCH
342342
);
343343
if( firstChngOnly ){
@@ -501,11 +501,11 @@
501501
if( fShowId ){
502502
@ (%d(fmid))
503503
}
504504
@ %W(zCom) (user:
505505
hyperlink_to_user(zUser, zDate, "");
506
- @ branch: %h(zBr))
506
+ @ branch: %z(href("%R/timeline?t=%T&n=200",zBr))%h(zBr)</a>
507507
if( g.perm.Hyperlink && zUuid ){
508508
const char *z = zFilename;
509509
@ %z(href("%R/annotate?filename=%h&checkin=%s",z,zCkin))
510510
@ [annotate]</a>
511511
@ %z(href("%R/blame?filename=%h&checkin=%s",z,zCkin))
512512
--- src/finfo.c
+++ src/finfo.c
@@ -333,11 +333,11 @@
333 " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */
334 " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */
335 " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */
336 " event.bgcolor," /* Background color */
337 " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0"
338 " AND tagxref.rid=mlink.mid)," /* Tags */
339 " mlink.mid," /* check-in ID */
340 " mlink.pfnid", /* Previous filename */
341 timeline_utc(), TAG_BRANCH
342 );
343 if( firstChngOnly ){
@@ -501,11 +501,11 @@
501 if( fShowId ){
502 @ (%d(fmid))
503 }
504 @ %W(zCom) (user:
505 hyperlink_to_user(zUser, zDate, "");
506 @ branch: %h(zBr))
507 if( g.perm.Hyperlink && zUuid ){
508 const char *z = zFilename;
509 @ %z(href("%R/annotate?filename=%h&checkin=%s",z,zCkin))
510 @ [annotate]</a>
511 @ %z(href("%R/blame?filename=%h&checkin=%s",z,zCkin))
512
--- src/finfo.c
+++ src/finfo.c
@@ -333,11 +333,11 @@
333 " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */
334 " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */
335 " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */
336 " event.bgcolor," /* Background color */
337 " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0"
338 " AND tagxref.rid=mlink.mid)," /* Branchname */
339 " mlink.mid," /* check-in ID */
340 " mlink.pfnid", /* Previous filename */
341 timeline_utc(), TAG_BRANCH
342 );
343 if( firstChngOnly ){
@@ -501,11 +501,11 @@
501 if( fShowId ){
502 @ (%d(fmid))
503 }
504 @ %W(zCom) (user:
505 hyperlink_to_user(zUser, zDate, "");
506 @ branch: %z(href("%R/timeline?t=%T&n=200",zBr))%h(zBr)</a>
507 if( g.perm.Hyperlink && zUuid ){
508 const char *z = zFilename;
509 @ %z(href("%R/annotate?filename=%h&checkin=%s",z,zCkin))
510 @ [annotate]</a>
511 @ %z(href("%R/blame?filename=%h&checkin=%s",z,zCkin))
512
--- src/manifest.c
+++ src/manifest.c
@@ -1799,10 +1799,23 @@
17991799
"INSERT OR IGNORE INTO plink(pid, cid, isprim, mtime, baseid)"
18001800
"VALUES(%d, %d, %d, %.17g, %s)",
18011801
pid, rid, i==0, p->rDate, zBaseId/*safe-for-%s*/);
18021802
add_mlink(pid, 0, rid, p, i);
18031803
if( i==0 ) parentid = pid;
1804
+ }
1805
+ if( p->nParent>1 ){
1806
+ /* Remove incorrect MLINK create-file entries that arise when a
1807
+ ** file is added by merge. */
1808
+ db_multi_exec(
1809
+ "DELETE FROM mlink"
1810
+ " WHERE mid=%d"
1811
+ " AND pid=0"
1812
+ " AND fnid IN "
1813
+ " (SELECT fnid FROM mlink WHERE mid=%d GROUP BY fnid"
1814
+ " HAVING count(*)<%d)",
1815
+ rid, rid, p->nParent
1816
+ );
18041817
}
18051818
db_prepare(&q, "SELECT cid, isprim FROM plink WHERE pid=%d", rid);
18061819
while( db_step(&q)==SQLITE_ROW ){
18071820
int cid = db_column_int(&q, 0);
18081821
int isprim = db_column_int(&q, 1);
18091822
--- src/manifest.c
+++ src/manifest.c
@@ -1799,10 +1799,23 @@
1799 "INSERT OR IGNORE INTO plink(pid, cid, isprim, mtime, baseid)"
1800 "VALUES(%d, %d, %d, %.17g, %s)",
1801 pid, rid, i==0, p->rDate, zBaseId/*safe-for-%s*/);
1802 add_mlink(pid, 0, rid, p, i);
1803 if( i==0 ) parentid = pid;
 
 
 
 
 
 
 
 
 
 
 
 
 
1804 }
1805 db_prepare(&q, "SELECT cid, isprim FROM plink WHERE pid=%d", rid);
1806 while( db_step(&q)==SQLITE_ROW ){
1807 int cid = db_column_int(&q, 0);
1808 int isprim = db_column_int(&q, 1);
1809
--- src/manifest.c
+++ src/manifest.c
@@ -1799,10 +1799,23 @@
1799 "INSERT OR IGNORE INTO plink(pid, cid, isprim, mtime, baseid)"
1800 "VALUES(%d, %d, %d, %.17g, %s)",
1801 pid, rid, i==0, p->rDate, zBaseId/*safe-for-%s*/);
1802 add_mlink(pid, 0, rid, p, i);
1803 if( i==0 ) parentid = pid;
1804 }
1805 if( p->nParent>1 ){
1806 /* Remove incorrect MLINK create-file entries that arise when a
1807 ** file is added by merge. */
1808 db_multi_exec(
1809 "DELETE FROM mlink"
1810 " WHERE mid=%d"
1811 " AND pid=0"
1812 " AND fnid IN "
1813 " (SELECT fnid FROM mlink WHERE mid=%d GROUP BY fnid"
1814 " HAVING count(*)<%d)",
1815 rid, rid, p->nParent
1816 );
1817 }
1818 db_prepare(&q, "SELECT cid, isprim FROM plink WHERE pid=%d", rid);
1819 while( db_step(&q)==SQLITE_ROW ){
1820 int cid = db_column_int(&q, 0);
1821 int isprim = db_column_int(&q, 1);
1822

Keyboard Shortcuts

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