diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-04-09 12:24:42 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-04-09 12:24:42 -0400 |
commit | 3748b178705497c0136d2f3cf679ea16a27ee50b (patch) | |
tree | 20239b0c7617ef9028e07e017884158401a19b96 /Command | |
parent | cf0126f4366d8b2cc51cfe1319867298d026952a (diff) |
proxy: Made it work when run in a new repository before initial commit.
Diffstat (limited to 'Command')
-rw-r--r-- | Command/Proxy.hs | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/Command/Proxy.hs b/Command/Proxy.hs index 9ccea5796..8c11bf770 100644 --- a/Command/Proxy.hs +++ b/Command/Proxy.hs @@ -15,6 +15,7 @@ import Utility.Env import Annex.Direct import qualified Git.Sha import qualified Git.Ref +import qualified Git.Branch cmd :: [Command] cmd = [notBareRepo $ @@ -28,19 +29,20 @@ start :: [String] -> CommandStart start [] = error "Did not specify command to run." start (c:ps) = liftIO . exitWith =<< ifM isDirect ( do - g <- gitRepo - withTmpDirIn (gitAnnexTmpMiscDir g) "proxy" go + tmp <- gitAnnexTmpMiscDir <$> gitRepo + withTmpDirIn tmp "proxy" go , liftIO $ safeSystem c (map Param ps) ) where go tmp = do oldref <- fromMaybe Git.Sha.emptyTree <$> inRepo Git.Ref.headSha - exitcode <- liftIO $ proxy tmp + exitcode <- proxy tmp mergeDirectCleanup tmp oldref return exitcode proxy tmp = do - usetmp <- Just . addEntry "GIT_WORK_TREE" tmp <$> getEnvironment - unlessM (boolSystemEnv "git" [Param "checkout", Param "--", Param "."] usetmp) $ - error "Failed to set up proxy work tree." - safeSystemEnv c (map Param ps) usetmp + usetmp <- liftIO $ Just . addEntry "GIT_WORK_TREE" tmp <$> getEnvironment + unlessM (isNothing <$> inRepo Git.Branch.current) $ + unlessM (liftIO $ boolSystemEnv "git" [Param "checkout", Param "--", Param "."] usetmp) $ + error "Failed to set up proxy work tree." + liftIO $ safeSystemEnv c (map Param ps) usetmp |