Fossil SCM

Enhancements to the timeline labeling with the uf= option. New hyperlinks from the finfo page to timeline with uf=.

drh 2012-11-15 15:57 UTC trunk
Commit a9372c05f5937dd10cdeb41b14062f9c27f44c0e
2 files changed +1 +26 -1
--- src/finfo.c
+++ src/finfo.c
@@ -371,10 +371,11 @@
371371
if( fpid ){
372372
@ %z(href("%R/fdiff?v1=%S&v2=%S",zPUuid,zUuid))[diff]</a>
373373
}
374374
@ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z))
375375
@ [annotate]</a>
376
+ @ %z(href("%R/timeline?n=200&uf=%S",zUuid))[checkins&nbsp;using]</a>
376377
}
377378
if( fDebug & FINFO_DEBUG_MLINK ){
378379
@ fid=%d(frid), pid=%d(fpid), mid=%d(fmid)
379380
}
380381
@ </td></tr>
381382
--- src/finfo.c
+++ src/finfo.c
@@ -371,10 +371,11 @@
371 if( fpid ){
372 @ %z(href("%R/fdiff?v1=%S&v2=%S",zPUuid,zUuid))[diff]</a>
373 }
374 @ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z))
375 @ [annotate]</a>
 
376 }
377 if( fDebug & FINFO_DEBUG_MLINK ){
378 @ fid=%d(frid), pid=%d(fpid), mid=%d(fmid)
379 }
380 @ </td></tr>
381
--- src/finfo.c
+++ src/finfo.c
@@ -371,10 +371,11 @@
371 if( fpid ){
372 @ %z(href("%R/fdiff?v1=%S&v2=%S",zPUuid,zUuid))[diff]</a>
373 }
374 @ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z))
375 @ [annotate]</a>
376 @ %z(href("%R/timeline?n=200&uf=%S",zUuid))[checkins&nbsp;using]</a>
377 }
378 if( fDebug & FINFO_DEBUG_MLINK ){
379 @ fid=%d(frid), pid=%d(fpid), mid=%d(fmid)
380 }
381 @ </td></tr>
382
+26 -1
--- src/timeline.c
+++ src/timeline.c
@@ -878,10 +878,34 @@
878878
rDate+ONE_SECOND
879879
);
880880
fossil_free(zToDel);
881881
}
882882
883
+/*
884
+** Return all possible names for file zUuid.
885
+*/
886
+char *names_of_file(const char *zUuid){
887
+ Stmt q;
888
+ Blob out;
889
+ const char *zSep = "";
890
+ db_prepare(&q,
891
+ "SELECT DISTINCT filename.name FROM mlink, filename"
892
+ " WHERE mlink.fid=(SELECT rid FROM blob WHERE uuid='%s')"
893
+ " AND filename.fnid=mlink.fnid",
894
+ zUuid
895
+ );
896
+ blob_zero(&out);
897
+ while( db_step(&q)==SQLITE_ROW ){
898
+ const char *zFN = db_column_text(&q, 0);
899
+ blob_appendf(&out, "%s%z%h</a>", zSep,
900
+ href("%R/finfo?name=%t", zFN), zFN);
901
+ zSep = " or ";
902
+ }
903
+ db_finalize(&q);
904
+ return blob_str(&out);
905
+}
906
+
883907
884908
/*
885909
** WEBPAGE: timeline
886910
**
887911
** Query parameters:
@@ -1237,11 +1261,12 @@
12371261
blob_appendf(&desc, "%d most recent %ss", n, zEType);
12381262
}else{
12391263
blob_appendf(&desc, "%d %ss", n, zEType);
12401264
}
12411265
if( zUses ){
1242
- blob_appendf(&desc, " using file %z%S</a>",
1266
+ char *zFilenames = names_of_file(zUses);
1267
+ blob_appendf(&desc, " using file %s version %z%S</a>", zFilenames,
12431268
href("%R/artifact/%S",zUses), zUses);
12441269
tmFlags |= TIMELINE_DISJOINT;
12451270
}
12461271
if( zUser ){
12471272
blob_appendf(&desc, " by user %h", zUser);
12481273
--- src/timeline.c
+++ src/timeline.c
@@ -878,10 +878,34 @@
878 rDate+ONE_SECOND
879 );
880 fossil_free(zToDel);
881 }
882
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
883
884 /*
885 ** WEBPAGE: timeline
886 **
887 ** Query parameters:
@@ -1237,11 +1261,12 @@
1237 blob_appendf(&desc, "%d most recent %ss", n, zEType);
1238 }else{
1239 blob_appendf(&desc, "%d %ss", n, zEType);
1240 }
1241 if( zUses ){
1242 blob_appendf(&desc, " using file %z%S</a>",
 
1243 href("%R/artifact/%S",zUses), zUses);
1244 tmFlags |= TIMELINE_DISJOINT;
1245 }
1246 if( zUser ){
1247 blob_appendf(&desc, " by user %h", zUser);
1248
--- src/timeline.c
+++ src/timeline.c
@@ -878,10 +878,34 @@
878 rDate+ONE_SECOND
879 );
880 fossil_free(zToDel);
881 }
882
883 /*
884 ** Return all possible names for file zUuid.
885 */
886 char *names_of_file(const char *zUuid){
887 Stmt q;
888 Blob out;
889 const char *zSep = "";
890 db_prepare(&q,
891 "SELECT DISTINCT filename.name FROM mlink, filename"
892 " WHERE mlink.fid=(SELECT rid FROM blob WHERE uuid='%s')"
893 " AND filename.fnid=mlink.fnid",
894 zUuid
895 );
896 blob_zero(&out);
897 while( db_step(&q)==SQLITE_ROW ){
898 const char *zFN = db_column_text(&q, 0);
899 blob_appendf(&out, "%s%z%h</a>", zSep,
900 href("%R/finfo?name=%t", zFN), zFN);
901 zSep = " or ";
902 }
903 db_finalize(&q);
904 return blob_str(&out);
905 }
906
907
908 /*
909 ** WEBPAGE: timeline
910 **
911 ** Query parameters:
@@ -1237,11 +1261,12 @@
1261 blob_appendf(&desc, "%d most recent %ss", n, zEType);
1262 }else{
1263 blob_appendf(&desc, "%d %ss", n, zEType);
1264 }
1265 if( zUses ){
1266 char *zFilenames = names_of_file(zUses);
1267 blob_appendf(&desc, " using file %s version %z%S</a>", zFilenames,
1268 href("%R/artifact/%S",zUses), zUses);
1269 tmFlags |= TIMELINE_DISJOINT;
1270 }
1271 if( zUser ){
1272 blob_appendf(&desc, " by user %h", zUser);
1273

Keyboard Shortcuts

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