rethought sim a bit
This commit is contained in:
parent
65dd018850
commit
def8095e5f
1 changed files with 27 additions and 31 deletions
|
@ -6,55 +6,43 @@ git-annex sim - simulate a network of repositories
|
||||||
|
|
||||||
git annex sim start [my.sim]
|
git annex sim start [my.sim]
|
||||||
|
|
||||||
git annex sim step N
|
|
||||||
|
|
||||||
git annex sim command
|
git annex sim command
|
||||||
|
|
||||||
|
git annex sim visit repo
|
||||||
|
|
||||||
git annex sim end
|
git annex sim end
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
This command simulates the behavior of git-annex in a network of
|
This command simulates the behavior of git-annex in a network of
|
||||||
repositories, recording which files would reach which repositories
|
repositories, determining which files would reach which repositories
|
||||||
according to the configuration of preferred content, numcopies,
|
according to the configuration of preferred content, numcopies,
|
||||||
trust level, etc.
|
trust level, etc.
|
||||||
|
|
||||||
The input to the simulation is the configuration contained in the
|
The input to the simulation is a sim file, and/or sim commands that are
|
||||||
repository it is run in, supplimented with an optional sim file,
|
run after starting it. These are in the form "git annex sim command"
|
||||||
which can be used to add repositories, change configuration, etc.
|
with the command in the same format used in the sim file (see sim commands
|
||||||
|
list below). For example, "git annex sim step 1" runs the simulation one step.
|
||||||
|
|
||||||
The simulation writes to an output sim file as it runs, which contains the
|
The simulation writes to an output sim file as it runs, which contains the
|
||||||
entire simulation input, as well as the results of the simulation.
|
entire simulation input, as well as the results of the simulation.
|
||||||
This allows re-running the same simulation later, as well as analyzing
|
This allows re-running the same simulation later, as well as analyzing
|
||||||
the results of the simulation.
|
the results of the simulation.
|
||||||
|
|
||||||
While a simulation is running, the git-annex branch of the current
|
On each step of the simulation, a simulated repository is selected,
|
||||||
repository is updated along the way with the simulated repositories and the
|
|
||||||
simulated locations of files. Additional annexed files can also be staged
|
|
||||||
in the index. This allows using any git-annex command, such
|
|
||||||
as `git-annex whereis` to examine the state of the simulation. git-annex
|
|
||||||
will refuse to merge the simulated git-annex branch with other
|
|
||||||
non-simulated git-annex branches, to avoid the simulation leaking out into
|
|
||||||
the real world.
|
|
||||||
|
|
||||||
Ending the simulation returns the git-annex branch to its original state,
|
|
||||||
and undoes any staged changes to the index. Note that the reflog will still
|
|
||||||
contain the simulated states of the git-annex branch, which will increase
|
|
||||||
the size of the git repository for some time before git eventually garbage
|
|
||||||
collects them.
|
|
||||||
|
|
||||||
The simulation can be run for a number of steps with eg
|
|
||||||
`git-annex sim step 10`. On each step, a simulated repository is selected,
|
|
||||||
and an action is performed in it. The actions include pushing and pulling
|
and an action is performed in it. The actions include pushing and pulling
|
||||||
the git-annex branch to and from remotes of the simulated repository, and
|
the git-annex branch to and from remotes of the simulated repository, and
|
||||||
simulating the transfer of annexed files to and from remotes according to
|
simulating the transfer of annexed files to and from remotes according to
|
||||||
the configuration.
|
the configuration.
|
||||||
|
|
||||||
The configuration of the simulation can be changed while it is running by
|
While a simulation is running, the command "git annex visit repo", where
|
||||||
using the usual git-annex commands, eg "git-annex numcopies 3" as well as
|
"repo" is the name of one of the repositories in the simulation, will spawn
|
||||||
by using "git annex sim [command]" to run a command in the same format used
|
a subshell in a git repository whose git-annex branch contains the state of
|
||||||
in the sim file. Configuration changes take effect in the next step of the
|
that simulated repository. This allows running any git-annex command, such
|
||||||
simulation, and are recorded in the output sim file.
|
as `git-annex whereis` to examine the state of the simulation.
|
||||||
|
Exit the subshell to end the visit.
|
||||||
|
|
||||||
|
Use "git annex sim end" to finish the simulation, and clean up.
|
||||||
|
|
||||||
# THE SIM FILE
|
# THE SIM FILE
|
||||||
|
|
||||||
|
@ -116,9 +104,12 @@ as passed to "git annex sim" while a simulation is running.
|
||||||
* `use name here|remote|description|uuid`
|
* `use name here|remote|description|uuid`
|
||||||
|
|
||||||
Use an existing repository in the simulation, with its existing
|
Use an existing repository in the simulation, with its existing
|
||||||
configuration. The repository is given a name for the purposes of
|
configuration (trust level, groups, preferred and required content,
|
||||||
the simulation. The repository to use can be specified by remote name,
|
maxsize, and the groupwanted configuration of its groups).
|
||||||
uuid, etc. Example: "use myrepo here"
|
|
||||||
|
The repository is given a name for the purposes of the simulation.
|
||||||
|
The repository to use can be specified by remote name, uuid, etc.
|
||||||
|
Example: "use myrepo here"
|
||||||
|
|
||||||
* `connect repo [<-|->|<->] repo [...]`
|
* `connect repo [<-|->|<->] repo [...]`
|
||||||
|
|
||||||
|
@ -204,6 +195,11 @@ as passed to "git annex sim" while a simulation is running.
|
||||||
Sets the desired number of copies. This is equivilant to
|
Sets the desired number of copies. This is equivilant to
|
||||||
[[git-annex-numcopies]](1).
|
[[git-annex-numcopies]](1).
|
||||||
|
|
||||||
|
* `trustlevel repo trusted|untrusted|semitrusted|dead`
|
||||||
|
|
||||||
|
Sets the trust level of the repository. This is equivilant to
|
||||||
|
[[git-annex-trust]](1), [[git-annex-untrust]](1), etc.
|
||||||
|
|
||||||
* `group repo group`
|
* `group repo group`
|
||||||
|
|
||||||
Add a repository to a group. This is equivilant to
|
Add a repository to a group. This is equivilant to
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue