File tree 1 file changed +14
-4
lines changed
1 file changed +14
-4
lines changed Original file line number Diff line number Diff line change @@ -89,11 +89,11 @@ runGit args def useIdx = do
89
89
ExitFailure _ -> return def
90
90
else return def
91
91
92
- -- | Determine where our git directory is, in case we're in a
92
+ -- | Determine where our @. git@ directory is, in case we're in a
93
93
-- submodule.
94
- getGitDirectory :: IO FilePath
95
- getGitDirectory = do
96
- pwd <- getCurrentDirectory
94
+ getDotGit :: IO FilePath
95
+ getDotGit = do
96
+ pwd <- getGitRoot
97
97
let dotGit = pwd </> " .git"
98
98
oops = return dotGit -- it's gonna fail, that's fine
99
99
isDir <- doesDirectoryExist dotGit
@@ -109,6 +109,16 @@ getGitDirectory = do
109
109
else oops
110
110
_ -> oops
111
111
112
+ -- | Get the root directory of the Git repo.
113
+ getGitRoot :: IO FilePath
114
+ getGitRoot = do
115
+ pwd <- getCurrentDirectory
116
+ (code, out, err) <-
117
+ readProcessWithExitCode " git" [" rev-parse" , " --show-toplevel" ] " "
118
+ case code of
119
+ ExitSuccess -> return $ takeWhile (/= ' \n ' ) out
120
+ ExitFailure _ -> return pwd -- later steps will fail, that's fine
121
+
112
122
-- | Type to flag if the git index is used or not in a call to runGit
113
123
data IndexUsed = IdxUsed -- ^ The git index is used
114
124
| IdxNotUsed -- ^ The git index is /not/ used
You can’t perform that action at this time.
0 commit comments