p2p: --link no longer takes a remote name, instead the --name option can be used.

This commit is contained in:
Joey Hess 2016-12-16 15:36:59 -04:00
parent 76d525c4d5
commit e67a310da1
No known key found for this signature in database
GPG key ID: C910D9222512E3C7
4 changed files with 39 additions and 13 deletions

View file

@ -12,6 +12,8 @@ git-annex (6.20161211) UNRELEASED; urgency=medium
have TCPKeepAlive enabled by default.
* Make all --batch input, as well as fromkey and registerurl stdin
be processed without requiring it to be in the current encoding.
* p2p: --link no longer takes a remote name, instead the --name
option can be used.
-- Joey Hess <id@joeyh.name> Sun, 11 Dec 2016 21:29:51 -0400

View file

@ -27,25 +27,43 @@ cmd = command "p2p" SectionSetup
data P2POpts
= GenAddresses
| LinkRemote RemoteName
| LinkRemote
optParser :: CmdParamsDesc -> Parser P2POpts
optParser _ = genaddresses <|> linkremote
optParser :: CmdParamsDesc -> Parser (P2POpts, Maybe RemoteName)
optParser _ = (,)
<$> (genaddresses <|> linkremote)
<*> optional name
where
genaddresses = flag' GenAddresses
( long "gen-addresses"
<> help "generate addresses that allow accessing this repository over P2P networks"
)
linkremote = LinkRemote <$> strOption
linkremote = flag' LinkRemote
( long "link"
<> metavar paramRemote
<> help "specify name to use for git remote"
<> help "set up a P2P link to a git remote"
)
name = strOption
( long "name"
<> metavar paramName
<> help "name of remote"
)
seek :: P2POpts -> CommandSeek
seek GenAddresses = genAddresses =<< loadP2PAddresses
seek (LinkRemote name) = commandAction $
seek :: (P2POpts, Maybe RemoteName) -> CommandSeek
seek (GenAddresses, _) = genAddresses =<< loadP2PAddresses
seek (LinkRemote, Just name) = commandAction $
linkRemote (Git.Remote.makeLegalName name)
seek (LinkRemote, Nothing) = commandAction $
linkRemote =<< unusedPeerRemoteName
unusedPeerRemoteName :: Annex RemoteName
unusedPeerRemoteName = go (1 :: Integer) =<< usednames
where
usednames = mapMaybe remoteName . remotes <$> Annex.gitRepo
go n names = do
let name = "peer" ++ show n
if name `elem` names
then go (n+1) names
else return name
-- Only addresses are output to stdout, to allow scripting.
genAddresses :: [P2PAddress] -> Annex ()

View file

@ -22,14 +22,20 @@ services.
over the available P2P networks. The address or addresses is output to
stdout.
* `--link remotename`
* `--link`
Sets up a git remote with the specified remotename that is accessed over
a P2P network.
Sets up a git remote that is accessed over a P2P network.
This will prompt for an address to be entered; you should paste in the
address that was generated by --gen-address in the remote repository.
Defaults to making the git remote be named "peer1", "peer2",
etc. This can be overridden with the `--name` option.
* `--name`
Specify a name to use when setting up a git remote.
# SEE ALSO
[[git-annex]](1)

View file

@ -46,7 +46,7 @@ Now, tell the new peer about the address of the first peer.
This will make a git remote named "peer1", which connects,
through Tor, to the repository on the other peer.
git annex p2p --link peer1
git annex p2p --link --name peer1
That command will prompt for an address; paste in the address that was
generated on the first peer, and then press Enter.