Fossil SCM

Add the ci= query parameter to the finfo webpage, to trace the direct ancestors of a file from a particular check-in.

drh 2013-05-25 17:22 trunk
Commit 418ec701a347b27dd6bb69956d129dabec28a894
1 file changed +18 -2
+18 -2
--- src/finfo.c
+++ src/finfo.c
@@ -256,19 +256,21 @@
256256
** a=DATE Only show changes after DATE
257257
** b=DATE Only show changes before DATE
258258
** n=NUM Show the first NUM changes only
259259
** brbg Background color by branch name
260260
** ubg Background color by user name
261
+** ci=UUID Ancestors of a particular check-in
261262
** fco=BOOL Show only first occurrence of each version if true (default)
262263
*/
263264
void finfo_page(void){
264265
Stmt q;
265266
const char *zFilename;
266267
char zPrevDate[20];
267268
const char *zA;
268269
const char *zB;
269270
int n;
271
+ int baseCheckin;
270272
271273
Blob title;
272274
Blob sql;
273275
HQuery url;
274276
GraphContext *pGraph;
@@ -283,10 +285,11 @@
283285
login_anonymous_available();
284286
url_initialize(&url, "finfo");
285287
if( brBg ) url_add_parameter(&url, "brbg", 0);
286288
if( uBg ) url_add_parameter(&url, "ubg", 0);
287289
if( firstChngOnly ) url_add_parameter(&url, "fco", "0");
290
+ baseCheckin = name_to_rid_www("ci");
288291
289292
zPrevDate[0] = 0;
290293
zFilename = PD("name","");
291294
url_add_parameter(&url, "name", zFilename);
292295
blob_zero(&sql);
@@ -314,10 +317,14 @@
314317
" FROM mlink, event"
315318
" WHERE mlink.fnid IN (SELECT fnid FROM filename WHERE name=%Q)"
316319
" AND event.objid=mlink.mid",
317320
zFilename
318321
);
322
+ if( baseCheckin ){
323
+ compute_direct_ancestors(baseCheckin, 10000000);
324
+ blob_appendf(&sql," AND mlink.mid IN (SELECT rid FROM ancestor)");
325
+ }
319326
if( (zA = P("a"))!=0 ){
320327
blob_appendf(&sql, " AND event.mtime>=julianday('%q')", zA);
321328
url_add_parameter(&url, "a", zA);
322329
}
323330
if( (zB = P("b"))!=0 ){
@@ -340,12 +347,21 @@
340347
url_render(&url, "fco", "1", 0, 0));
341348
}
342349
db_prepare(&q, blob_str(&sql));
343350
blob_reset(&sql);
344351
blob_zero(&title);
345
- blob_appendf(&title, "History of ");
346
- hyperlinked_path(zFilename, &title, 0);
352
+ if( baseCheckin ){
353
+ char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
354
+ char *zLink = href("%R/info/%S", zUuid);
355
+ blob_appendf(&title, "Ancestry of ");
356
+ hyperlinked_path(zFilename, &title, 0);
357
+ blob_appendf(&title, " from check-in %z%.10s</a>", zLink, zUuid);
358
+ fossil_free(zUuid);
359
+ }else{
360
+ blob_appendf(&title, "History of ");
361
+ hyperlinked_path(zFilename, &title, 0);
362
+ }
347363
@ <h2>%b(&title)</h2>
348364
blob_reset(&title);
349365
pGraph = graph_init();
350366
@ <div id="canvas" style="position:relative;width:1px;height:1px;"
351367
@ onclick="clickOnGraph(event)"></div>
352368
--- src/finfo.c
+++ src/finfo.c
@@ -256,19 +256,21 @@
256 ** a=DATE Only show changes after DATE
257 ** b=DATE Only show changes before DATE
258 ** n=NUM Show the first NUM changes only
259 ** brbg Background color by branch name
260 ** ubg Background color by user name
 
261 ** fco=BOOL Show only first occurrence of each version if true (default)
262 */
263 void finfo_page(void){
264 Stmt q;
265 const char *zFilename;
266 char zPrevDate[20];
267 const char *zA;
268 const char *zB;
269 int n;
 
270
271 Blob title;
272 Blob sql;
273 HQuery url;
274 GraphContext *pGraph;
@@ -283,10 +285,11 @@
283 login_anonymous_available();
284 url_initialize(&url, "finfo");
285 if( brBg ) url_add_parameter(&url, "brbg", 0);
286 if( uBg ) url_add_parameter(&url, "ubg", 0);
287 if( firstChngOnly ) url_add_parameter(&url, "fco", "0");
 
288
289 zPrevDate[0] = 0;
290 zFilename = PD("name","");
291 url_add_parameter(&url, "name", zFilename);
292 blob_zero(&sql);
@@ -314,10 +317,14 @@
314 " FROM mlink, event"
315 " WHERE mlink.fnid IN (SELECT fnid FROM filename WHERE name=%Q)"
316 " AND event.objid=mlink.mid",
317 zFilename
318 );
 
 
 
 
319 if( (zA = P("a"))!=0 ){
320 blob_appendf(&sql, " AND event.mtime>=julianday('%q')", zA);
321 url_add_parameter(&url, "a", zA);
322 }
323 if( (zB = P("b"))!=0 ){
@@ -340,12 +347,21 @@
340 url_render(&url, "fco", "1", 0, 0));
341 }
342 db_prepare(&q, blob_str(&sql));
343 blob_reset(&sql);
344 blob_zero(&title);
345 blob_appendf(&title, "History of ");
346 hyperlinked_path(zFilename, &title, 0);
 
 
 
 
 
 
 
 
 
347 @ <h2>%b(&title)</h2>
348 blob_reset(&title);
349 pGraph = graph_init();
350 @ <div id="canvas" style="position:relative;width:1px;height:1px;"
351 @ onclick="clickOnGraph(event)"></div>
352
--- src/finfo.c
+++ src/finfo.c
@@ -256,19 +256,21 @@
256 ** a=DATE Only show changes after DATE
257 ** b=DATE Only show changes before DATE
258 ** n=NUM Show the first NUM changes only
259 ** brbg Background color by branch name
260 ** ubg Background color by user name
261 ** ci=UUID Ancestors of a particular check-in
262 ** fco=BOOL Show only first occurrence of each version if true (default)
263 */
264 void finfo_page(void){
265 Stmt q;
266 const char *zFilename;
267 char zPrevDate[20];
268 const char *zA;
269 const char *zB;
270 int n;
271 int baseCheckin;
272
273 Blob title;
274 Blob sql;
275 HQuery url;
276 GraphContext *pGraph;
@@ -283,10 +285,11 @@
285 login_anonymous_available();
286 url_initialize(&url, "finfo");
287 if( brBg ) url_add_parameter(&url, "brbg", 0);
288 if( uBg ) url_add_parameter(&url, "ubg", 0);
289 if( firstChngOnly ) url_add_parameter(&url, "fco", "0");
290 baseCheckin = name_to_rid_www("ci");
291
292 zPrevDate[0] = 0;
293 zFilename = PD("name","");
294 url_add_parameter(&url, "name", zFilename);
295 blob_zero(&sql);
@@ -314,10 +317,14 @@
317 " FROM mlink, event"
318 " WHERE mlink.fnid IN (SELECT fnid FROM filename WHERE name=%Q)"
319 " AND event.objid=mlink.mid",
320 zFilename
321 );
322 if( baseCheckin ){
323 compute_direct_ancestors(baseCheckin, 10000000);
324 blob_appendf(&sql," AND mlink.mid IN (SELECT rid FROM ancestor)");
325 }
326 if( (zA = P("a"))!=0 ){
327 blob_appendf(&sql, " AND event.mtime>=julianday('%q')", zA);
328 url_add_parameter(&url, "a", zA);
329 }
330 if( (zB = P("b"))!=0 ){
@@ -340,12 +347,21 @@
347 url_render(&url, "fco", "1", 0, 0));
348 }
349 db_prepare(&q, blob_str(&sql));
350 blob_reset(&sql);
351 blob_zero(&title);
352 if( baseCheckin ){
353 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
354 char *zLink = href("%R/info/%S", zUuid);
355 blob_appendf(&title, "Ancestry of ");
356 hyperlinked_path(zFilename, &title, 0);
357 blob_appendf(&title, " from check-in %z%.10s</a>", zLink, zUuid);
358 fossil_free(zUuid);
359 }else{
360 blob_appendf(&title, "History of ");
361 hyperlinked_path(zFilename, &title, 0);
362 }
363 @ <h2>%b(&title)</h2>
364 blob_reset(&title);
365 pGraph = graph_init();
366 @ <div id="canvas" style="position:relative;width:1px;height:1px;"
367 @ onclick="clickOnGraph(event)"></div>
368

Keyboard Shortcuts

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