diff options
author | Joey Hess <joey@kitenet.net> | 2014-04-05 16:04:37 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-04-05 16:10:39 -0400 |
commit | 73050592050239490beb656f2b7e3cde567df237 (patch) | |
tree | c1e900fc388af75052fd078fce2feddf75343433 /RemoteDaemon/Types.hs | |
parent | 13fe079e1a7c1ce4269c1ceb8113c3603d8abe9a (diff) |
git-annex-shell: Added notifychanges command.
This will be used by the remote-daemon to quickly tell when changes have
been pushed from some other repository into a ssh remote.
Adjusted the remote-daemon protocol to communicate changed shas, rather
than git branch refs. This way, it can easily check if a sha is new.
This commit was sponsored by Carlos Trijueque Albarran.
Diffstat (limited to 'RemoteDaemon/Types.hs')
-rw-r--r-- | RemoteDaemon/Types.hs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/RemoteDaemon/Types.hs b/RemoteDaemon/Types.hs index 746b895f6..b4b8ba066 100644 --- a/RemoteDaemon/Types.hs +++ b/RemoteDaemon/Types.hs @@ -10,13 +10,14 @@ module RemoteDaemon.Types where -import Common.Annex import qualified Git.Types as Git import qualified Utility.SimpleProtocol as Proto -- Messages that the daemon emits. data Emitted - = CHANGED RemoteName RefList + = CONNECTED RemoteName + | DISCONNECTED RemoteName + | CHANGED RemoteName ShaList | STATUS RemoteName UserMessage | ERROR RemoteName UserMessage @@ -29,13 +30,17 @@ data Consumed type RemoteName = String type UserMessage = String -type RefList = [Git.Ref] +type ShaList = [Git.Sha] instance Proto.Sendable Emitted where - formatMessage (CHANGED remote refs) = + formatMessage (CONNECTED remote) = + ["CONNECTED", Proto.serialize remote] + formatMessage (DISCONNECTED remote) = + ["DISCONNECTED", Proto.serialize remote] + formatMessage (CHANGED remote shas) = ["CHANGED" , Proto.serialize remote - , Proto.serialize refs + , Proto.serialize shas ] formatMessage (STATUS remote msg) = ["STATUS" @@ -55,6 +60,8 @@ instance Proto.Sendable Consumed where formatMessage RELOAD = ["RELOAD"] instance Proto.Receivable Emitted where + parseCommand "CONNECTED" = Proto.parse1 CONNECTED + parseCommand "DISCONNECTED" = Proto.parse1 DISCONNECTED parseCommand "CHANGED" = Proto.parse2 CHANGED parseCommand "STATUS" = Proto.parse2 STATUS parseCommand "ERROR" = Proto.parse2 ERROR @@ -71,6 +78,6 @@ instance Proto.Serializable [Char] where serialize = id deserialize = Just -instance Proto.Serializable RefList where +instance Proto.Serializable ShaList where serialize = unwords . map Git.fromRef deserialize = Just . map Git.Ref . words |