Fossil SCM
In the change list send into the post-receive hook, omit any changes that are more than 24 hours older than the most recent change.
Commit
8e424389e02fa065377f2310151d257dc4967ca12d20c9ffead402a9939d9215
Parent
4777999d32b6500…
1 file changed
+11
-11
+11
-11
| --- src/hook.c | ||
| +++ src/hook.c | ||
| @@ -108,10 +108,12 @@ | ||
| 108 | 108 | } |
| 109 | 109 | |
| 110 | 110 | /* |
| 111 | 111 | ** Fill the Blob pOut with text that describes all artifacts |
| 112 | 112 | ** received after zBaseRcvid up to and including zNewRcvid. |
| 113 | +** Except, never include more than one days worth of changes. | |
| 114 | +** | |
| 113 | 115 | ** If zBaseRcvid is NULL, then use the "hook-last-rcvid" setting. |
| 114 | 116 | ** If zNewRcvid is NULL, use the last available rcvid. |
| 115 | 117 | */ |
| 116 | 118 | void hook_changes(Blob *pOut, const char *zBaseRcvid, const char *zNewRcvid){ |
| 117 | 119 | char *zWhere; |
| @@ -118,16 +120,20 @@ | ||
| 118 | 120 | Stmt q; |
| 119 | 121 | if( zBaseRcvid==0 ){ |
| 120 | 122 | zBaseRcvid = db_get("hook-last-rcvid","0"); |
| 121 | 123 | } |
| 122 | 124 | if( zNewRcvid==0 ){ |
| 123 | - zWhere = mprintf("IN (SELECT rid FROM blob WHERE rcvid>%d)", | |
| 124 | - atoi(zBaseRcvid)); | |
| 125 | - }else{ | |
| 126 | - zWhere = mprintf("IN (SELECT rid FROM blob WHERE rcvid>%d AND rcvid<=%d", | |
| 127 | - atoi(zBaseRcvid), atoi(zNewRcvid)); | |
| 125 | + zNewRcvid = db_text("0","SELECT max(rcvid) FROM rcvfrom"); | |
| 128 | 126 | } |
| 127 | + zBaseRcvid = db_text(0, | |
| 128 | + "SELECT min(rcvid) FROM rcvfrom" | |
| 129 | + " WHERE rcvid>=%d" | |
| 130 | + " AND mtime>=(SELECT mtime FROM rcvfrom WHERE rcvid=%d)-1.0", | |
| 131 | + atoi(zBaseRcvid), atoi(zNewRcvid) | |
| 132 | + ); | |
| 133 | + zWhere = mprintf("IN (SELECT rid FROM blob WHERE rcvid>%d AND rcvid<=%d)", | |
| 134 | + atoi(zBaseRcvid), atoi(zNewRcvid)); | |
| 129 | 135 | describe_artifacts(zWhere); |
| 130 | 136 | fossil_free(zWhere); |
| 131 | 137 | db_prepare(&q, "SELECT uuid, summary FROM description"); |
| 132 | 138 | while( db_step(&q)==SQLITE_ROW ){ |
| 133 | 139 | blob_appendf(pOut, "%s %s\n", db_column_text(&q,0), db_column_text(&q,1)); |
| @@ -207,16 +213,10 @@ | ||
| 207 | 213 | " json_object('cmd',%Q,'type',%Q,'seq',%d))," |
| 208 | 214 | " mtime=now()" |
| 209 | 215 | " WHERE name='hooks';", |
| 210 | 216 | zCmd, zType, nSeq |
| 211 | 217 | ); |
| 212 | - /* Make sure hook-list-rcvid is initialized */ | |
| 213 | - db_multi_exec( | |
| 214 | - "INSERT OR IGNORE INTO config(name,value,mtime)" | |
| 215 | - " SELECT 'hook-last-rcvid', rcvid, now()" | |
| 216 | - " FROM rcvfrom ORDER BY rcvid DESC limit 1" | |
| 217 | - ); | |
| 218 | 218 | db_commit_transaction(); |
| 219 | 219 | }else |
| 220 | 220 | if( strncmp(zCmd, "edit", nCmd)==0 ){ |
| 221 | 221 | const char *zCmd = find_option("command",0,1); |
| 222 | 222 | const char *zType = find_option("type",0,1); |
| 223 | 223 |
| --- src/hook.c | |
| +++ src/hook.c | |
| @@ -108,10 +108,12 @@ | |
| 108 | } |
| 109 | |
| 110 | /* |
| 111 | ** Fill the Blob pOut with text that describes all artifacts |
| 112 | ** received after zBaseRcvid up to and including zNewRcvid. |
| 113 | ** If zBaseRcvid is NULL, then use the "hook-last-rcvid" setting. |
| 114 | ** If zNewRcvid is NULL, use the last available rcvid. |
| 115 | */ |
| 116 | void hook_changes(Blob *pOut, const char *zBaseRcvid, const char *zNewRcvid){ |
| 117 | char *zWhere; |
| @@ -118,16 +120,20 @@ | |
| 118 | Stmt q; |
| 119 | if( zBaseRcvid==0 ){ |
| 120 | zBaseRcvid = db_get("hook-last-rcvid","0"); |
| 121 | } |
| 122 | if( zNewRcvid==0 ){ |
| 123 | zWhere = mprintf("IN (SELECT rid FROM blob WHERE rcvid>%d)", |
| 124 | atoi(zBaseRcvid)); |
| 125 | }else{ |
| 126 | zWhere = mprintf("IN (SELECT rid FROM blob WHERE rcvid>%d AND rcvid<=%d", |
| 127 | atoi(zBaseRcvid), atoi(zNewRcvid)); |
| 128 | } |
| 129 | describe_artifacts(zWhere); |
| 130 | fossil_free(zWhere); |
| 131 | db_prepare(&q, "SELECT uuid, summary FROM description"); |
| 132 | while( db_step(&q)==SQLITE_ROW ){ |
| 133 | blob_appendf(pOut, "%s %s\n", db_column_text(&q,0), db_column_text(&q,1)); |
| @@ -207,16 +213,10 @@ | |
| 207 | " json_object('cmd',%Q,'type',%Q,'seq',%d))," |
| 208 | " mtime=now()" |
| 209 | " WHERE name='hooks';", |
| 210 | zCmd, zType, nSeq |
| 211 | ); |
| 212 | /* Make sure hook-list-rcvid is initialized */ |
| 213 | db_multi_exec( |
| 214 | "INSERT OR IGNORE INTO config(name,value,mtime)" |
| 215 | " SELECT 'hook-last-rcvid', rcvid, now()" |
| 216 | " FROM rcvfrom ORDER BY rcvid DESC limit 1" |
| 217 | ); |
| 218 | db_commit_transaction(); |
| 219 | }else |
| 220 | if( strncmp(zCmd, "edit", nCmd)==0 ){ |
| 221 | const char *zCmd = find_option("command",0,1); |
| 222 | const char *zType = find_option("type",0,1); |
| 223 |
| --- src/hook.c | |
| +++ src/hook.c | |
| @@ -108,10 +108,12 @@ | |
| 108 | } |
| 109 | |
| 110 | /* |
| 111 | ** Fill the Blob pOut with text that describes all artifacts |
| 112 | ** received after zBaseRcvid up to and including zNewRcvid. |
| 113 | ** Except, never include more than one days worth of changes. |
| 114 | ** |
| 115 | ** If zBaseRcvid is NULL, then use the "hook-last-rcvid" setting. |
| 116 | ** If zNewRcvid is NULL, use the last available rcvid. |
| 117 | */ |
| 118 | void hook_changes(Blob *pOut, const char *zBaseRcvid, const char *zNewRcvid){ |
| 119 | char *zWhere; |
| @@ -118,16 +120,20 @@ | |
| 120 | Stmt q; |
| 121 | if( zBaseRcvid==0 ){ |
| 122 | zBaseRcvid = db_get("hook-last-rcvid","0"); |
| 123 | } |
| 124 | if( zNewRcvid==0 ){ |
| 125 | zNewRcvid = db_text("0","SELECT max(rcvid) FROM rcvfrom"); |
| 126 | } |
| 127 | zBaseRcvid = db_text(0, |
| 128 | "SELECT min(rcvid) FROM rcvfrom" |
| 129 | " WHERE rcvid>=%d" |
| 130 | " AND mtime>=(SELECT mtime FROM rcvfrom WHERE rcvid=%d)-1.0", |
| 131 | atoi(zBaseRcvid), atoi(zNewRcvid) |
| 132 | ); |
| 133 | zWhere = mprintf("IN (SELECT rid FROM blob WHERE rcvid>%d AND rcvid<=%d)", |
| 134 | atoi(zBaseRcvid), atoi(zNewRcvid)); |
| 135 | describe_artifacts(zWhere); |
| 136 | fossil_free(zWhere); |
| 137 | db_prepare(&q, "SELECT uuid, summary FROM description"); |
| 138 | while( db_step(&q)==SQLITE_ROW ){ |
| 139 | blob_appendf(pOut, "%s %s\n", db_column_text(&q,0), db_column_text(&q,1)); |
| @@ -207,16 +213,10 @@ | |
| 213 | " json_object('cmd',%Q,'type',%Q,'seq',%d))," |
| 214 | " mtime=now()" |
| 215 | " WHERE name='hooks';", |
| 216 | zCmd, zType, nSeq |
| 217 | ); |
| 218 | db_commit_transaction(); |
| 219 | }else |
| 220 | if( strncmp(zCmd, "edit", nCmd)==0 ){ |
| 221 | const char *zCmd = find_option("command",0,1); |
| 222 | const char *zType = find_option("type",0,1); |
| 223 |