@@ -133,16 +133,38 @@
133 133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void undo_reset(void){
134 134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char zSql[] =
135 135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ DROP TABLE IF EXISTS undo;
136 136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ DROP TABLE IF EXISTS undo_vfile;
137 137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ DROP TABLE IF EXISTS undo_vmerge;
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ DROP TABLE IF EXISTS undo_pending;
139 138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
;
140 139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(zSql);
141 140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_lset_int("undo_available", 0);
142 141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_lset_int("undo_checkout", 0);
143 142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The following variable stores the original command-line of the
146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** command that is a candidate to be undone.
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char *undoCmd = 0;
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Capture the current command-line and store it as part of the undo
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** state. This routine is called before options are extracted from the
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** command-line so that we can record the complete command-line.
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void undo_capture_command_line(void){
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob cmdline;
157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( undoCmd==0 );
159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&cmdline);
160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=1; i<g.argc; i++){
161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i>1 ) blob_append(&cmdline, " ", 1);
162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(&cmdline, g.argv[i], -1);
163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ undoCmd = blob_str(&cmdline);
165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
144 166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
145 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
146 168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This flag is true if we are in the process of collecting file changes
147 169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for undo. When this flag is false, undo_save() is a no-op.
148 170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -161,18 +183,18 @@
161 183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ existsflag BOOLEAN, -- True if the file exists
162 184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ content BLOB -- Saved content
163 185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ );
164 186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ CREATE TABLE %s.undo_vfile AS SELECT * FROM vfile;
165 187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ CREATE TABLE %s.undo_vmerge AS SELECT * FROM vmerge;
166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ CREATE TABLE %s.undo_pending(undoId INTEGER PRIMARY KEY);
167 188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
;
168 189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
undo_reset();
169 190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strcmp(g.zMainDbType,zDb)==0 ) zDb = "main";
170 191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(zSql, zDb, zDb, zDb, zDb);
171 192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cid = db_lget_int("checkout", 0);
172 193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_lset_int("undo_checkout", cid);
173 194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_lset_int("undo_available", 1);
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_lset("undo_cmdline", undoCmd);
174 196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
undoActive = 1;
175 197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
176 198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
177 199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
178 200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This flag is true if one or more files have changed and have been
@@ -243,81 +265,79 @@
243 265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
undo_all_filesystem(0);
244 266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245 267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
246 268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
247 269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: undo
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** COMMAND: redo
248 271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Usage: %fossil undo ?FILENAME...?
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Usage: %fossil undo ?--explain? ?FILENAME...?
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or: %fossil redo ?--explain? ?FILENAME...?
250 274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
251 275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Undo the most recent update or merge or revert operation. If FILENAME is
252 276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** specified then restore the content of the named file(s) but otherwise
253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** leave the update or merge or revert in effect.
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** leave the update or merge or revert in effect. The redo command undoes
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the effect of the most recent undo.
279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the --explain option is present, not changes are made and instead
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the undo or redo command explains what actions the undo or redo would
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** have done had the --explain been omitted.
254 283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
255 284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A single level of undo/redo is supported. The undo/redo stack
256 285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is cleared by the commit and checkout commands.
257 286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
258 287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void undo_cmd(void){
259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int undo_available;
260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_must_be_within_tree();
261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_begin_transaction();
262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- undo_available = db_lget_int("undo_available", 0);
263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.argc==2 ){
264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( undo_available!=1 ){
265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_fatal("no update or merge operation is available to undo");
266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- undo_all(0);
268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_lset_int("undo_available", 2);
269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( g.argc>=3 ){
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( undo_available==0 ){
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_fatal("no update or merge operation is available to undo");
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=2; i<g.argc; i++){
275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zFile = g.argv[i];
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob path;
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- file_tree_name(zFile, &path, 1);
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- undo_one(blob_str(&path), 0);
279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&path);
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_end_transaction(0);
283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** COMMAND: redo
287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Usage: %fossil redo ?FILENAME...?
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Redo an update or merge or revert operation that has been undone
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** by the undo command. If FILENAME is specified then restore the changes
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** associated with the named file(s) but otherwise leave the update
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or merge undone.
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** A single level of undo/redo is supported. The undo/redo stack
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is cleared by the commit and checkout commands.
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void redo_cmd(void){
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int undo_available;
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_must_be_within_tree();
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_begin_transaction();
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- undo_available = db_lget_int("undo_available", 0);
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.argc==2 ){
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( undo_available!=2 ){
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_fatal("no undone update or merge operation is available to redo");
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- undo_all(1);
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_lset_int("undo_available", 1);
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( g.argc>=3 ){
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( undo_available==0 ){
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_fatal("no update or merge operation is available to redo");
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=2; i<g.argc; i++){
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zFile = g.argv[i];
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob path;
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- file_tree_name(zFile, &path, 1);
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- undo_one(blob_str(&path), 0);
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int isRedo = g.argv[1][0]=='r';
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int undo_available;
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int explainFlag = find_option("explain", 0, 0)!=0;
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zCmd = isRedo ? "redo" : "undo";
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_must_be_within_tree();
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_begin_transaction();
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ undo_available = db_lget_int("undo_available", 0);
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( explainFlag ){
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( undo_available==0 ){
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("No undo or redo is available\n");
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Stmt q;
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nChng = 0;
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCmd = undo_available==1 ? "undo" : "redo";
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("A %s is available for the following command:\n\n %s %s\n\n",
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCmd, g.argv[0], db_lget("undo_cmdline", "???"));
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q,
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT existsflag, pathname FROM undo ORDER BY pathname"
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( db_step(&q)==SQLITE_ROW ){
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nChng==0 ){
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("The following file changes would occur if the "
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "command above is %sne:\n\n", zCmd);
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nChng++;
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("%s %s\n",
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_column_int(&q,0) ? "UPDATE" : "DELETE",
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_column_text(&q, 1)
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q);
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nChng==0 ){
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("No file changes would occur with this undo/redo.\n");
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( g.argc==2 ){
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( undo_available!=(1+isRedo) ){
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_fatal("nothing to %s", zCmd);
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ undo_all(isRedo);
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_lset_int("undo_available", 2-isRedo);
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( g.argc>=3 ){
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( undo_available==0 ){
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_fatal("nothing to %s", zCmd);
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=2; i<g.argc; i++){
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFile = g.argv[i];
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob path;
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file_tree_name(zFile, &path, 1);
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ undo_one(blob_str(&path), isRedo);
319 339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&path);
320 340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
321 341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
322 342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(0);
323 343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
324 344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!