diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ExtendedDefaultRules #-}
@@ -19,7 +20,11 @@
 import           Control.Monad.Trans.State
 import qualified Data.List as L
 import           Data.Maybe
+#if MIN_VERSION_shelly(1, 0, 0)
+import           Data.Text as T
+#else
 import           Data.Text.Lazy as T
+#endif
 import           Filesystem (listDirectory)
 import           Filesystem.Path (directory, filename)
 import           GHC.Conc
@@ -34,10 +39,10 @@
 default (T.Text)
 
 version :: String
-version       = "1.3.0"
+version = "1.3.0"
 
 copyright :: String
-copyright     = "2012"
+copyright = "2012"
 
 gitAllSummary :: String
 gitAllSummary = "git-all v" ++ version ++ ", (C) John Wiegley " ++ copyright
@@ -53,7 +58,7 @@
 gitAll :: GitAll
 gitAll = GitAll
     { jobs      = def &= name "j" &= typ "INT"
-                      &= help "Run INT concurrent finds at once (default: 2)"
+                      &= help "Run INT concurrent finds at once (default: 4)"
     , pulls     = def &= name "p"
                       &= help "Include NEED PULL sections"
     , untracked = def &= name "U"
@@ -206,9 +211,8 @@
 
 doGit :: FilePath -> Text -> [Text] -> Sh Text
 doGit dir com gitArgs = do
-  let gitDir  = T.append "--git-dir=" (toTextIgnore dir)
-  let workDir = T.append "--work-tree=" (toTextIgnore (dirAsFile dir))
-  run "git" $ [gitDir, workDir, com] ++ gitArgs
+  cd (dirAsFile dir)
+  run "git" (com:gitArgs)
 
 git :: FilePath -> Text -> [Text] -> IOState Text
 git dir com gitArgs = do
diff --git a/git-all.cabal b/git-all.cabal
--- a/git-all.cabal
+++ b/git-all.cabal
@@ -1,6 +1,6 @@
 Name: git-all
 
-Version:  1.3.0
+Version:  1.4.0
 Synopsis: Determine which Git repositories need actions to be taken
 
 Description: A utility for determining which Git repositories need actions to be
