Skip to content

Commit 0d47151

Browse files
authored
fix: init git only not inside git work tree (#5789)
Addresses part of #2758.
1 parent d23a231 commit 0d47151

File tree

4 files changed

+10
-2
lines changed

4 files changed

+10
-2
lines changed

src/lake/Lake/CLI/Init.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,8 @@ def initPkg (dir : FilePath) (name : Name) (tmp : InitTemplate) (lang : ConfigLa
278278
IO.FS.writeFile readmeFile (readmeFileContents <| dotlessName name)
279279

280280
-- initialize a `.git` repository if none already
281-
unless (← FilePath.isDir <| dir / ".git") do
282-
let repo := GitRepo.mk dir
281+
let repo := GitRepo.mk dir
282+
unless (← repo.insideWorkTree) do
283283
try
284284
repo.quietInit
285285
unless upstreamBranch = "master" do

src/lake/Lake/Util/Git.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ def cwd : GitRepo := ⟨"."⟩
6363
@[inline] def quietInit (repo : GitRepo) : LogIO PUnit :=
6464
repo.execGit #["init", "-q"]
6565

66+
@[inline] def insideWorkTree (repo : GitRepo) : BaseIO Bool := do
67+
repo.testGit #["rev-parse", "--is-inside-work-tree"]
68+
6669
@[inline] def fetch (repo : GitRepo) (remote := Git.defaultRemote) : LogIO PUnit :=
6770
repo.execGit #["fetch", "--tags", "--force", remote]
6871

src/lake/tests/clone/test.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ mkdir hello
1818
pushd hello
1919
$LAKE init hello
2020
$LAKE update
21+
git init
2122
git checkout -b master
2223
git config user.name test
2324
git config user.email test@example.com

src/lake/tests/depTree/test.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ fi
2222
# a@1/init
2323
$LAKE new a lib.lean
2424
pushd a
25+
git init
2526
git checkout -b master
2627
git add .
2728
git config user.name test
@@ -33,6 +34,7 @@ popd
3334
# b@1: require a@master, manifest a@1
3435
$LAKE new b lib.lean
3536
pushd b
37+
git init
3638
git checkout -b master
3739
cat >>lakefile.lean <<EOF
3840
require a from git "../a" @ "master"
@@ -54,6 +56,7 @@ popd
5456
# c@1: require a@master, manifest a@2
5557
$LAKE new c lib.lean
5658
pushd c
59+
git init
5760
git checkout -b master
5861
cat >>lakefile.lean <<EOF
5962
require a from git "../a" @ "master"
@@ -69,6 +72,7 @@ popd
6972
# d@1: require b@master c@master => a, manifest a@1 b@1 c@1
7073
$LAKE new d lib.lean
7174
pushd d
75+
git init
7276
git checkout -b master
7377
cat >>lakefile.lean <<EOF
7478
require b from git "../b" @ "master"

0 commit comments

Comments
 (0)