[[!comment format=mdwn username="helmut" ip="89.0.176.236" subject="Asynchronous hooks?" date="2012-10-13T09:46:14Z" content=""" Is there a way to use asynchronous remotes? Interaction with git annex would have to split the part of initiating some action from completing it. I imagine I could `git annex copy` a file to an asynchronous remote and the command would almost immediately complete. Later I would learn that the transfer is completed, so the hook must be able to record that information in the `git-annex` branch. An additional plumbing command seems required here as well as a way to indicate that even though the store-hook completed, the file is not transferred. Similarly `git annex get` would immediately return without actually fetching the file. This should already be possible by returning non-zero from the retrieve-hook. Later the hook could use plumbing level commands to actually stick the received file into the repository. The remove-hook should need no changes, but the checkpresent-hook would be more like a trigger without any actual result. The extension of the plumbing required for the extension to the receive-hook could update the location log. A downside here is that you never know when a fsck has completed. My proposal does not include a way to track the completion of actions, but relies on the hook to always complete them reliably. It is not clear that this is the best road for asynchronous hooks. One use case for this would be a remote that is only accessible via uucp. Are there other use cases? Is the drafted interface useful? """]]