Synchronize the tracking database to reflect new and/or deleted
objects. This function is intended to be called by a task callback so
that the tracking database automatically keeps up with new and deleted
objects. The appropriate task callback is installed by
track.start(..., auto = TRUE)
. If too much memory is occupied
by objects, excess objects are flushed from memory.
This function differs from track.rescan()
in that
track.rescan()
updates R view of the database to agree with
changes on disk, while track.sync()
is primarily intended to
go the other way (to make the disk database agree with R).
track.sync(pos = 1, master=c("auto", "envir", "files"), envir = as.environment(pos), trackingEnv = getTrackingEnv(envir), full = TRUE, dryRun = FALSE, taskEnd = FALSE)
auto
will
default to "files"
(the only sensible interpretation).
Otherwise, must be supplied (to avoid accidents with users mis-remembering the default.)
When master="envir"
, changes are propagated from the
R environment to the file system.
When master="files"
, the R environment is made to reflect the
file system (differences could result from changes to the R
environment, or from changes to the file system, e.g., by another R
process changing the database).pos=
)
of specifying the environment being tracked, but should be rarely needed.TRUE
, do a full check, which involves
checking that all apparently tracked variables do in fact have an
active binding. If NA
, only do a full check if more than
track.options("autoTrackFullSyncWait")
seconds have passed
since the last full check (because this check can be slow when there
are many variables in the environment.TRUE
, no changes are made to either the file
system or to the R environment, but changes that would be made are
printed out. Note that a change to a file for a tracked variable
will not be detect.TRUE
when called at the end of a
top-level command task (i.e., when called by the task callback
handler.)
Currently, this function will not correctly handle the case where
master="files"
and where objects are cached and an underlying
file is changed.
track.rescan
for rescanning a tracked database
after the files on disk have changed (this is usually only used for
tracked environment attached at a position 2 or greater.)