data SimAction
= ActionPull RemoteName
| ActionPush RemoteName
+ | ActionSync RemoteName
| ActionGetWanted RemoteName
| ActionDropUnwanted (Maybe RemoteName)
| ActionSendWanted RemoteName
-> Either String (Either (Annex (SimState SimRepo)) (SimState SimRepo))
applySimAction _r _u (ActionPull _remote) _st = undefined -- TODO
applySimAction _r _u (ActionPush _remote) _st = undefined -- TODO
+applySimAction _r _u (ActionSync _remote) _st = undefined -- TODO
applySimAction r u (ActionGetWanted remote) st =
overFilesRemote r u remote S.member wanted go st
where
mkactions =
[ ActionPull
, ActionPush
+ , ActionSync
, ActionGetWanted
, ActionDropUnwanted . Just
, const (ActionDropUnwanted Nothing)
["action", repo, "pull", remote] : go rest
go (CommandAction (RepoName repo) (ActionPush (RemoteName remote)) : rest) =
["action", repo, "push", remote] : go rest
+ go (CommandAction (RepoName repo) (ActionSync (RemoteName remote)) : rest) =
+ ["action", repo, "sync", remote] : go rest
go (CommandAction (RepoName repo) (ActionGetWanted (RemoteName remote)) : rest) =
["action", repo, "getwanted", remote] : go rest
go (CommandAction (RepoName repo) (ActionDropUnwanted (Just (RemoteName remote))) : rest) =
parseSimCommand ("action":repo:"push":remote:[]) =
Right $ CommandAction (RepoName repo)
(ActionPush (RemoteName remote))
+parseSimCommand ("action":repo:"sync":remote:[]) =
+ Right $ CommandAction (RepoName repo)
+ (ActionSync (RemoteName remote))
parseSimCommand ("action":repo:"getwanted":remote:[]) =
Right $ CommandAction (RepoName repo)
(ActionGetWanted (RemoteName remote))
On each step of the simulation, a simulated repository is selected
at random, and a random action is performed in it.
-* `action repo pull remote`
-
- Simulate the equivilant of [[git-annex-pull]](1).
-
-* `action repo push remote`
-
- Simulate the equivilant of [[git-annex-push]](1).
-
* `action repo getwanted remote`
Simulate the repository getting files it wants from the remote.
Simulate the repository pulling the git-annex branch from the remote.
+* `action repo pull remote`
+
+ Simulate the equivilant of [[git-annex-pull]](1), by combining
+ the actions gitpull, getwanted, and dropunwanted.
+
+* `action repo push remote`
+
+ Simulate the equivilant of [[git-annex-push]](1) by combining
+ the actions sendwanted, dropunwanted, and gitpush.
+
+* `action repo sync remote`
+
+ Simulate the equivilant of [[git-annex-sync]](1) by combining
+ the actions gitpull, getwanted, sendwanted, dropunwanted, and gitpush.
+
* `seed N`
Sets the random seed to a given number. Using this should make the