mirror: New command, makes two repositories contain the same set of files.
This is a simple approach for setting up a mirroring repository. It will work with any type of remotes. Mirror --from is more expensive than mirror --to in general. OTOH, mirror --from will get the file from any remote that has it, not only the named mirror remote. And if the named mirror remote is not the fastest available remote with a file, that can speed things up. It would be possible to make the assistant or watch command do a more dynamic mirroring, that didn't need to scan every time.
This commit is contained in:
parent
f5623af6ec
commit
0f921307e7
10 changed files with 103 additions and 21 deletions
|
@ -15,23 +15,23 @@ import Logs.Location
|
|||
import Logs.Transfer
|
||||
import qualified Remote
|
||||
import Types.Remote
|
||||
import qualified Command.Move
|
||||
import GitAnnex.Options
|
||||
import qualified Option
|
||||
|
||||
def :: [Command]
|
||||
def = [withOptions options $
|
||||
def = [withOptions transferKeyOptions $
|
||||
noCommit $ command "transferkey" paramKey seek SectionPlumbing
|
||||
"transfers a key from or to a remote"]
|
||||
|
||||
options :: [Option]
|
||||
options = [fileOption, Command.Move.fromOption, Command.Move.toOption]
|
||||
transferKeyOptions :: [Option]
|
||||
transferKeyOptions = fileOption : fromToOptions
|
||||
|
||||
fileOption :: Option
|
||||
fileOption = Option.field [] "file" paramFile "the associated file"
|
||||
|
||||
seek :: [CommandSeek]
|
||||
seek = [withField Command.Move.toOption Remote.byNameWithUUID $ \to ->
|
||||
withField Command.Move.fromOption Remote.byNameWithUUID $ \from ->
|
||||
seek = [withField toOption Remote.byNameWithUUID $ \to ->
|
||||
withField fromOption Remote.byNameWithUUID $ \from ->
|
||||
withField fileOption return $ \file ->
|
||||
withKeys $ start to from file]
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue