Skip to content

Commit

Permalink
Merge pull request #560 from JrGoodle/git-output
Browse files Browse the repository at this point in the history
Print git output as stream
  • Loading branch information
JrGoodle committed Jun 2, 2020
2 parents 271506f + a0e3d3b commit 10647e0
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 24 deletions.
22 changes: 11 additions & 11 deletions src/clowder/git/git_repo.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import clowder.util.formatting as fmt
from clowder.error import ClowderError, ClowderErrorType
from clowder.logging import LOG_DEBUG
from clowder.util.execute import execute_command
from clowder.util.file_system import remove_directory

from .util import (
Expand Down Expand Up @@ -183,7 +184,6 @@ def fetch(self, remote: str, ref: Optional[str] = None, depth: int = 0,
"""

remote_output = fmt.remote_string(remote)
quiet = not self._print_output
if depth == 0 or ref is None:
self._print(f' - Fetch from {remote_output}')
error_message = f'{fmt.ERROR} Failed to fetch from remote {remote_output}'
Expand All @@ -194,14 +194,15 @@ def fetch(self, remote: str, ref: Optional[str] = None, depth: int = 0,

try:
if depth == 0:
print(self.repo.git.fetch(remote, prune=True, tags=True, quiet=quiet), end='')
execute_command(f'git fetch {remote} --prune --tags', self.repo_path, print_output=self._print_output)
elif ref is None:
print(self.repo.git.fetch(remote, depth=depth, prune=True, tags=True, quiet=quiet), end='')
command = f'git fetch {remote} --depth {depth} --prune --tags'
execute_command(command, self.repo_path, print_output=self._print_output)
else:
print(self.repo.git.fetch(remote, truncate_ref(ref),
depth=depth, prune=True, tags=True, quiet=quiet), end='')
except GitError as err:
LOG_DEBUG('Git error', err)
command = f'git fetch {remote} {truncate_ref(ref)} --depth {depth} --prune --tags'
execute_command(command, self.repo_path, print_output=self._print_output)
except ClowderError as err:
LOG_DEBUG('Failed to fetch', err)
if remove_dir:
# TODO: Handle possible exceptions
remove_directory(self.repo_path)
Expand Down Expand Up @@ -523,11 +524,10 @@ def status_verbose(self) -> None:

command = 'git status -vv'
self._print(fmt.command(command))

try:
print(self.repo.git.status('-vv'))
except GitError as err:
LOG_DEBUG('Git error', err)
execute_command(command, self.repo_path)
except ClowderError as err:
LOG_DEBUG('Failed to print git status verbase', err)
message = f'{fmt.ERROR} Failed to print verbose status'
message = self._format_error_message(message)
raise ClowderError(ClowderErrorType.GIT_ERROR, message, error=err)
Expand Down
15 changes: 7 additions & 8 deletions src/clowder/git/project_repo_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import clowder.util.formatting as fmt
from clowder.error import ClowderError, ClowderErrorType
from clowder.logging import LOG_DEBUG
from clowder.util.execute import execute_command
from clowder.util.file_system import remove_directory

from .git_repo import GitRepo
Expand Down Expand Up @@ -531,11 +532,10 @@ def _pull(self, remote: str, branch: str) -> None:
branch_output = fmt.ref_string(branch)
remote_output = fmt.remote_string(remote)
self._print(f' - Pull from {remote_output} {branch_output}')
quiet = not self._print_output
try:
self._print(self.repo.git.pull(remote, branch, quiet=quiet))
except GitError as err:
LOG_DEBUG('Git error', err)
execute_command(f"git pull {remote} {branch}", self.repo_path, print_output=self._print_output)
except ClowderError as err:
LOG_DEBUG('Failed to pull', err)
message = f'{fmt.ERROR} Failed to pull from {remote_output} {branch_output}'
message = self._format_error_message(message)
raise ClowderError(ClowderErrorType.GIT_ERROR, message, error=err)
Expand All @@ -554,11 +554,10 @@ def _rebase_remote_branch(self, remote: str, branch: str) -> None:
branch_output = fmt.ref_string(branch)
remote_output = fmt.remote_string(remote)
self._print(f' - Rebase onto {remote_output} {branch_output}')
quiet = not self._print_output
try:
self._print(self.repo.git.pull(remote, branch, rebase=True, quiet=quiet))
except GitError as err:
LOG_DEBUG('Git error', err)
execute_command(f"git pull {remote} {branch} --rebase", self.repo_path, print_output=self._print_output)
except ClowderError as err:
LOG_DEBUG('Failed pull with rebase', err)
message = f'{fmt.ERROR} Failed to rebase onto {remote_output} {branch_output}'
message = self._format_error_message(message)
raise ClowderError(ClowderErrorType.GIT_ERROR, message, error=err)
Expand Down
18 changes: 13 additions & 5 deletions src/clowder/git/project_repo_recursive.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import clowder.util.formatting as fmt
from clowder.error import ClowderError, ClowderErrorType
from clowder.logging import LOG_DEBUG
from clowder.util.execute import execute_command

from .project_repo import GitConfig, ProjectRepo

Expand Down Expand Up @@ -129,13 +130,20 @@ def submodule_update_recursive(self, depth: int = 0) -> None:

self._print(' - Recursively update and init submodules')

error_message = f'{fmt.ERROR} Failed to update submodules'
if depth == 0:
self._submodule_command('update', '--init', '--recursive',
error_msg=error_message)
command = f"git submodule update --init --recursive"
else:
self._submodule_command('update', '--init', '--recursive', '--depth', depth,
error_msg=error_message)
command = f"git submodule update --init --recursive --depth {depth}"

try:
execute_command(command, self.repo_path, print_output=self._print_output)
except ClowderError as err:
LOG_DEBUG('Failed to update submodules', err)
message = f'{fmt.ERROR} Failed to update submodules'
message = self._format_error_message(message)
raise ClowderError(ClowderErrorType.GIT_ERROR, message, error=err)
except (KeyboardInterrupt, SystemExit):
raise ClowderError(ClowderErrorType.USER_INTERRUPT, fmt.error_user_interrupt())

def validate_repo(self, allow_missing_repo: bool = True) -> bool:
"""Validate repo state
Expand Down

0 comments on commit 10647e0

Please sign in to comment.