Skip to content

Commit 7253ea9

Browse files
committed
2024-12-27T23:28:11Z
1 parent 4457949 commit 7253ea9

File tree

5 files changed

+45
-14
lines changed

5 files changed

+45
-14
lines changed

omdev/git/subtrees.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class GitSubtreeCloner:
1515

1616
# _: dc.KW_ONLY
1717

18-
repo_subtrees: ta.Sequence[str]
18+
repo_subtrees: ta.Optional[ta.Sequence[str]] = None
1919

2020
branch: ta.Optional[str] = None
2121
rev: ta.Optional[str] = None
@@ -61,7 +61,7 @@ def build_commands(self) -> ta.Iterator[Command]:
6161
'sparse-checkout',
6262
'set',
6363
'--no-cone',
64-
*self.repo_subtrees,
64+
*(self.repo_subtrees or []),
6565
),
6666
cwd=rd,
6767
)
@@ -84,7 +84,7 @@ def git_clone_subtree(
8484
repo_dir: str,
8585
branch: ta.Optional[str] = None,
8686
rev: ta.Optional[str] = None,
87-
repo_subtrees: ta.Sequence[str],
87+
repo_subtrees: ta.Optional[ta.Sequence[str]] = None,
8888
) -> None:
8989
for cmd in GitSubtreeCloner(
9090
base_dir=base_dir,

omdev/git/tests/test_subtree.py

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import tempfile
2+
3+
from ..subtrees import git_clone_subtree
4+
5+
6+
def test_subtree():
7+
td = tempfile.mkdtemp()
8+
print(td)
9+
10+
git_clone_subtree(
11+
base_dir=td,
12+
repo_url='https://github.com/wrmsr/flaskthing',
13+
repo_dir='flaskthing',
14+
rev='e9de238fc8cb73f7e0cc245139c0a45b33294fe3',
15+
repo_subtrees=[],
16+
)
17+
18+
#
19+
20+
td = tempfile.mkdtemp()
21+
print(td)
22+
23+
git_clone_subtree(
24+
base_dir=td,
25+
repo_url='https://github.com/wrmsr/flaskthing',
26+
repo_dir='flaskthing',
27+
rev='e9de238fc8cb73f7e0cc245139c0a45b33294fe3',
28+
repo_subtrees=['README.md'],
29+
)

ominfra/manage/deploy/git.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def get_repo_dir(
139139

140140
#
141141

142-
async def shallow_clone_subtrees(
142+
async def shallow_clone(
143143
self,
144144
spec: DeployGitSpec,
145145
home: DeployHome,
@@ -159,7 +159,7 @@ async def shallow_clone_subtrees(
159159
repo_url=self.make_repo_url(spec.repo),
160160
repo_dir=tdn,
161161
rev=spec.rev,
162-
repo_subtrees=check.not_none(spec.subtrees),
162+
repo_subtrees=spec.subtrees,
163163
).build_commands():
164164
await asyncio_subprocesses.check_call(
165165
*cmd.cmd,
@@ -183,8 +183,8 @@ async def checkout(
183183
home: DeployHome,
184184
dst_dir: str,
185185
) -> None:
186-
if spec.shallow and spec.subtrees:
187-
await self.shallow_clone_subtrees(
186+
if spec.shallow:
187+
await self.shallow_clone(
188188
spec,
189189
home,
190190
dst_dir,

ominfra/manage/deploy/specs.py

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class DeployGitSpec:
5252
rev: DeployRev
5353

5454
subtrees: ta.Optional[ta.Sequence[str]] = None
55+
5556
shallow: bool = False
5657

5758
def __post_init__(self) -> None:

ominfra/scripts/manage.py

+8-7
Original file line numberDiff line numberDiff line change
@@ -8339,7 +8339,7 @@ class GitSubtreeCloner:
83398339

83408340
# _: dc.KW_ONLY
83418341

8342-
repo_subtrees: ta.Sequence[str]
8342+
repo_subtrees: ta.Optional[ta.Sequence[str]] = None
83438343

83448344
branch: ta.Optional[str] = None
83458345
rev: ta.Optional[str] = None
@@ -8385,7 +8385,7 @@ def build_commands(self) -> ta.Iterator[Command]:
83858385
'sparse-checkout',
83868386
'set',
83878387
'--no-cone',
8388-
*self.repo_subtrees,
8388+
*(self.repo_subtrees or []),
83898389
),
83908390
cwd=rd,
83918391
)
@@ -8408,7 +8408,7 @@ def git_clone_subtree(
84088408
repo_dir: str,
84098409
branch: ta.Optional[str] = None,
84108410
rev: ta.Optional[str] = None,
8411-
repo_subtrees: ta.Sequence[str],
8411+
repo_subtrees: ta.Optional[ta.Sequence[str]] = None,
84128412
) -> None:
84138413
for cmd in GitSubtreeCloner(
84148414
base_dir=base_dir,
@@ -8741,6 +8741,7 @@ class DeployGitSpec:
87418741
rev: DeployRev
87428742

87438743
subtrees: ta.Optional[ta.Sequence[str]] = None
8744+
87448745
shallow: bool = False
87458746

87468747
def __post_init__(self) -> None:
@@ -11439,7 +11440,7 @@ def get_repo_dir(
1143911440

1144011441
#
1144111442

11442-
async def shallow_clone_subtrees(
11443+
async def shallow_clone(
1144311444
self,
1144411445
spec: DeployGitSpec,
1144511446
home: DeployHome,
@@ -11459,7 +11460,7 @@ async def shallow_clone_subtrees(
1145911460
repo_url=self.make_repo_url(spec.repo),
1146011461
repo_dir=tdn,
1146111462
rev=spec.rev,
11462-
repo_subtrees=check.not_none(spec.subtrees),
11463+
repo_subtrees=spec.subtrees,
1146311464
).build_commands():
1146411465
await asyncio_subprocesses.check_call(
1146511466
*cmd.cmd,
@@ -11483,8 +11484,8 @@ async def checkout(
1148311484
home: DeployHome,
1148411485
dst_dir: str,
1148511486
) -> None:
11486-
if spec.shallow and spec.subtrees:
11487-
await self.shallow_clone_subtrees(
11487+
if spec.shallow:
11488+
await self.shallow_clone(
1148811489
spec,
1148911490
home,
1149011491
dst_dir,

0 commit comments

Comments
 (0)