Fossil SCM

Enhance the finfo page to show renames and/or where the file was added.

drh 2012-11-15 20:25 UTC trunk
Commit dac6424e66a82723a487e44c647f9e5d1ab83c50
1 file changed +29 -9
+29 -9
--- src/finfo.c
+++ src/finfo.c
@@ -229,10 +229,12 @@
229229
const char *zFilename;
230230
char zPrevDate[20];
231231
const char *zA;
232232
const char *zB;
233233
int n;
234
+ int fnid;
235
+
234236
Blob title;
235237
Blob sql;
236238
HQuery url;
237239
GraphContext *pGraph;
238240
int brBg = P("brbg")!=0;
@@ -263,16 +265,15 @@
263265
" (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */
264266
" (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */
265267
" (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */
266268
" event.bgcolor," /* Background color */
267269
" (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0"
268
- " AND tagxref.rid=mlink.mid)", /* Tags */
270
+ " AND tagxref.rid=mlink.mid)," /* Tags */
271
+ " mlink.mid," /* check-in ID */
272
+ " mlink.pfnid", /* Previous filename */
269273
TAG_BRANCH
270274
);
271
- if( fDebug & FINFO_DEBUG_MLINK ){
272
- blob_appendf(&sql, ", mlink.mid");
273
- }
274275
if( firstChngOnly ){
275276
blob_appendf(&sql, ", min(event.mtime)");
276277
}
277278
blob_appendf(&sql,
278279
" FROM mlink, event"
@@ -322,18 +323,16 @@
322323
const char *zPUuid = db_column_text(&q, 5);
323324
const char *zUuid = db_column_text(&q, 6);
324325
const char *zCkin = db_column_text(&q,7);
325326
const char *zBgClr = db_column_text(&q, 8);
326327
const char *zBr = db_column_text(&q, 9);
327
- int fmid = 0;
328
+ int fmid = db_column_int(&q, 10);
329
+ int pfnid = db_column_int(&q, 11);
328330
int gidx;
329331
char zTime[10];
330332
char zShort[20];
331333
char zShortCkin[20];
332
- if( fDebug & FINFO_DEBUG_MLINK ){
333
- fmid = db_column_int(&q,10);
334
- }
335334
if( zBr==0 ) zBr = "trunk";
336335
if( uBg ){
337336
zBgClr = hash_color(zUser);
338337
}else if( brBg || zBgClr==0 || zBgClr[0]==0 ){
339338
zBgClr = strcmp(zBr,"trunk")==0 ? "" : hash_color(zBr);
@@ -356,13 +355,34 @@
356355
@ <td class="timelineTableCell">
357356
}
358357
sqlite3_snprintf(sizeof(zShort), zShort, "%.10s", zUuid);
359358
sqlite3_snprintf(sizeof(zShortCkin), zShortCkin, "%.10s", zCkin);
360359
if( zUuid ){
360
+ if( fpid==0 ){
361
+ @ <b>Added</b>
362
+ }else if( pfnid ){
363
+ char *zPrevName = db_text(0, "SELECT name FROM filename WHERE fnid=%d",
364
+ pfnid);
365
+ @ <b>Renamed</b> from
366
+ @ %z(href("%R/finfo?name=%t", zPrevName))%h(zPrevName)</a>
367
+ }
361368
@ %z(href("%R/artifact/%s",zUuid))[%S(zUuid)]</a> part of check-in
362369
}else{
363
- @ <b>Deleted</b> by check-in
370
+ char *zNewName;
371
+ zNewName = db_text(0,
372
+ "SELECT name FROM filename WHERE fnid = "
373
+ " (SELECT fnid FROM mlink"
374
+ " WHERE mid=%d"
375
+ " AND pfnid IN (SELECT fnid FROM filename WHERE name=%Q %s))",
376
+ fmid, zFilename, filename_collation());
377
+ if( zNewName ){
378
+ @ <b>Renamed</b> to
379
+ @ %z(href("%R/finfo?name=%t",zNewName))%h(zNewName)</a> by check-in
380
+ fossil_free(zNewName);
381
+ }else{
382
+ @ <b>Deleted</b> by check-in
383
+ }
364384
}
365385
hyperlink_to_uuid(zShortCkin);
366386
@ %h(zCom) (user:
367387
hyperlink_to_user(zUser, zDate, "");
368388
@ branch: %h(zBr))
369389
--- src/finfo.c
+++ src/finfo.c
@@ -229,10 +229,12 @@
229 const char *zFilename;
230 char zPrevDate[20];
231 const char *zA;
232 const char *zB;
233 int n;
 
 
234 Blob title;
235 Blob sql;
236 HQuery url;
237 GraphContext *pGraph;
238 int brBg = P("brbg")!=0;
@@ -263,16 +265,15 @@
263 " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */
264 " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */
265 " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */
266 " event.bgcolor," /* Background color */
267 " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0"
268 " AND tagxref.rid=mlink.mid)", /* Tags */
 
 
269 TAG_BRANCH
270 );
271 if( fDebug & FINFO_DEBUG_MLINK ){
272 blob_appendf(&sql, ", mlink.mid");
273 }
274 if( firstChngOnly ){
275 blob_appendf(&sql, ", min(event.mtime)");
276 }
277 blob_appendf(&sql,
278 " FROM mlink, event"
@@ -322,18 +323,16 @@
322 const char *zPUuid = db_column_text(&q, 5);
323 const char *zUuid = db_column_text(&q, 6);
324 const char *zCkin = db_column_text(&q,7);
325 const char *zBgClr = db_column_text(&q, 8);
326 const char *zBr = db_column_text(&q, 9);
327 int fmid = 0;
 
328 int gidx;
329 char zTime[10];
330 char zShort[20];
331 char zShortCkin[20];
332 if( fDebug & FINFO_DEBUG_MLINK ){
333 fmid = db_column_int(&q,10);
334 }
335 if( zBr==0 ) zBr = "trunk";
336 if( uBg ){
337 zBgClr = hash_color(zUser);
338 }else if( brBg || zBgClr==0 || zBgClr[0]==0 ){
339 zBgClr = strcmp(zBr,"trunk")==0 ? "" : hash_color(zBr);
@@ -356,13 +355,34 @@
356 @ <td class="timelineTableCell">
357 }
358 sqlite3_snprintf(sizeof(zShort), zShort, "%.10s", zUuid);
359 sqlite3_snprintf(sizeof(zShortCkin), zShortCkin, "%.10s", zCkin);
360 if( zUuid ){
 
 
 
 
 
 
 
 
361 @ %z(href("%R/artifact/%s",zUuid))[%S(zUuid)]</a> part of check-in
362 }else{
363 @ <b>Deleted</b> by check-in
 
 
 
 
 
 
 
 
 
 
 
 
 
364 }
365 hyperlink_to_uuid(zShortCkin);
366 @ %h(zCom) (user:
367 hyperlink_to_user(zUser, zDate, "");
368 @ branch: %h(zBr))
369
--- src/finfo.c
+++ src/finfo.c
@@ -229,10 +229,12 @@
229 const char *zFilename;
230 char zPrevDate[20];
231 const char *zA;
232 const char *zB;
233 int n;
234 int fnid;
235
236 Blob title;
237 Blob sql;
238 HQuery url;
239 GraphContext *pGraph;
240 int brBg = P("brbg")!=0;
@@ -263,16 +265,15 @@
265 " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */
266 " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */
267 " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */
268 " event.bgcolor," /* Background color */
269 " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0"
270 " AND tagxref.rid=mlink.mid)," /* Tags */
271 " mlink.mid," /* check-in ID */
272 " mlink.pfnid", /* Previous filename */
273 TAG_BRANCH
274 );
 
 
 
275 if( firstChngOnly ){
276 blob_appendf(&sql, ", min(event.mtime)");
277 }
278 blob_appendf(&sql,
279 " FROM mlink, event"
@@ -322,18 +323,16 @@
323 const char *zPUuid = db_column_text(&q, 5);
324 const char *zUuid = db_column_text(&q, 6);
325 const char *zCkin = db_column_text(&q,7);
326 const char *zBgClr = db_column_text(&q, 8);
327 const char *zBr = db_column_text(&q, 9);
328 int fmid = db_column_int(&q, 10);
329 int pfnid = db_column_int(&q, 11);
330 int gidx;
331 char zTime[10];
332 char zShort[20];
333 char zShortCkin[20];
 
 
 
334 if( zBr==0 ) zBr = "trunk";
335 if( uBg ){
336 zBgClr = hash_color(zUser);
337 }else if( brBg || zBgClr==0 || zBgClr[0]==0 ){
338 zBgClr = strcmp(zBr,"trunk")==0 ? "" : hash_color(zBr);
@@ -356,13 +355,34 @@
355 @ <td class="timelineTableCell">
356 }
357 sqlite3_snprintf(sizeof(zShort), zShort, "%.10s", zUuid);
358 sqlite3_snprintf(sizeof(zShortCkin), zShortCkin, "%.10s", zCkin);
359 if( zUuid ){
360 if( fpid==0 ){
361 @ <b>Added</b>
362 }else if( pfnid ){
363 char *zPrevName = db_text(0, "SELECT name FROM filename WHERE fnid=%d",
364 pfnid);
365 @ <b>Renamed</b> from
366 @ %z(href("%R/finfo?name=%t", zPrevName))%h(zPrevName)</a>
367 }
368 @ %z(href("%R/artifact/%s",zUuid))[%S(zUuid)]</a> part of check-in
369 }else{
370 char *zNewName;
371 zNewName = db_text(0,
372 "SELECT name FROM filename WHERE fnid = "
373 " (SELECT fnid FROM mlink"
374 " WHERE mid=%d"
375 " AND pfnid IN (SELECT fnid FROM filename WHERE name=%Q %s))",
376 fmid, zFilename, filename_collation());
377 if( zNewName ){
378 @ <b>Renamed</b> to
379 @ %z(href("%R/finfo?name=%t",zNewName))%h(zNewName)</a> by check-in
380 fossil_free(zNewName);
381 }else{
382 @ <b>Deleted</b> by check-in
383 }
384 }
385 hyperlink_to_uuid(zShortCkin);
386 @ %h(zCom) (user:
387 hyperlink_to_user(zUser, zDate, "");
388 @ branch: %h(zBr))
389

Keyboard Shortcuts

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