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. have TCPKeepAlive enabled by default.
* Make all --batch input, as well as fromkey and registerurl stdin * Make all --batch input, as well as fromkey and registerurl stdin
be processed without requiring it to be in the current encoding. 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 -- 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 data P2POpts
= GenAddresses = GenAddresses
| LinkRemote RemoteName | LinkRemote
optParser :: CmdParamsDesc -> Parser P2POpts optParser :: CmdParamsDesc -> Parser (P2POpts, Maybe RemoteName)
optParser _ = genaddresses <|> linkremote optParser _ = (,)
<$> (genaddresses <|> linkremote)
<*> optional name
where where
genaddresses = flag' GenAddresses genaddresses = flag' GenAddresses
( long "gen-addresses" ( long "gen-addresses"
<> help "generate addresses that allow accessing this repository over P2P networks" <> help "generate addresses that allow accessing this repository over P2P networks"
) )
linkremote = LinkRemote <$> strOption linkremote = flag' LinkRemote
( long "link" ( long "link"
<> metavar paramRemote <> help "set up a P2P link to a git remote"
<> help "specify name to use for git remote" )
name = strOption
( long "name"
<> metavar paramName
<> help "name of remote"
) )
seek :: P2POpts -> CommandSeek seek :: (P2POpts, Maybe RemoteName) -> CommandSeek
seek GenAddresses = genAddresses =<< loadP2PAddresses seek (GenAddresses, _) = genAddresses =<< loadP2PAddresses
seek (LinkRemote name) = commandAction $ seek (LinkRemote, Just name) = commandAction $
linkRemote (Git.Remote.makeLegalName name) 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. -- Only addresses are output to stdout, to allow scripting.
genAddresses :: [P2PAddress] -> Annex () genAddresses :: [P2PAddress] -> Annex ()

View file

@ -22,14 +22,20 @@ services.
over the available P2P networks. The address or addresses is output to over the available P2P networks. The address or addresses is output to
stdout. stdout.
* `--link remotename` * `--link`
Sets up a git remote with the specified remotename that is accessed over Sets up a git remote that is accessed over a P2P network.
a P2P network.
This will prompt for an address to be entered; you should paste in the 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. 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 # SEE ALSO
[[git-annex]](1) [[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, This will make a git remote named "peer1", which connects,
through Tor, to the repository on the other peer. 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 That command will prompt for an address; paste in the address that was
generated on the first peer, and then press Enter. generated on the first peer, and then press Enter.