This commit is contained in:
@@ -5,7 +5,7 @@ import pwd
|
||||
import shlex
|
||||
import shutil
|
||||
import subprocess
|
||||
from collections.abc import Mapping
|
||||
from collections.abc import Mapping, Sequence
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from urllib.parse import urlparse
|
||||
@@ -48,6 +48,20 @@ class GitWorkspace:
|
||||
check: bool = True,
|
||||
username: str | None = None,
|
||||
extra_environment: Mapping[str, str] | None = None,
|
||||
) -> subprocess.CompletedProcess[str]:
|
||||
return self.run_args(
|
||||
shlex.split(command),
|
||||
check=check,
|
||||
username=username,
|
||||
extra_environment=extra_environment,
|
||||
)
|
||||
|
||||
def run_args(
|
||||
self,
|
||||
command: Sequence[str],
|
||||
check: bool = True,
|
||||
username: str | None = None,
|
||||
extra_environment: Mapping[str, str] | None = None,
|
||||
) -> subprocess.CompletedProcess[str]:
|
||||
environment = dict(os.environ)
|
||||
drop_privileges = None
|
||||
@@ -66,7 +80,7 @@ class GitWorkspace:
|
||||
environment.update(extra_environment or {})
|
||||
|
||||
return subprocess.run(
|
||||
shlex.split(command),
|
||||
command,
|
||||
cwd=self.path,
|
||||
env=environment,
|
||||
text=True,
|
||||
@@ -76,6 +90,10 @@ class GitWorkspace:
|
||||
preexec_fn=drop_privileges,
|
||||
)
|
||||
|
||||
def discard_changes(self) -> None:
|
||||
self._git("reset", "--hard", "HEAD")
|
||||
self._git("clean", "-fd")
|
||||
|
||||
def summary(self) -> ChangeSummary:
|
||||
self._git("add", "-N", "--all")
|
||||
output = self._git("diff", "--numstat").stdout
|
||||
|
||||
Reference in New Issue
Block a user