diff --git a/dvc/git_wrapper.py b/dvc/git_wrapper.py index abb077ef8..2e307159e 100644 --- a/dvc/git_wrapper.py +++ b/dvc/git_wrapper.py @@ -103,7 +103,16 @@ class GitWrapper(GitWrapperI): def __init__(self): super(GitWrapper, self).__init__() + def is_inside_work_tree(self): + code, out, err = Executor.exec_cmd(['git', 'rev-parse', '--is-inside-work-tree']) + if code != 0: + Logger.error('[dvc-git] Not inside git tree'); + return code == 0 + def is_ready_to_go(self): + if not self.is_inside_work_tree(): + return False + statuses = self.git_file_statuses() if len(statuses) > 0: Logger.error('[dvc-git] Commit all changed files before running ' @@ -112,6 +121,9 @@ class GitWrapper(GitWrapperI): Logger.error("{} {}".format(status, file)) return False + return self.check_config() + + def check_config(self): # Sanity check to make sure we will be able to commit name = self.git_config_get('user.name') if name == None: diff --git a/dvc/main.py b/dvc/main.py index 11de00049..22f9af212 100644 --- a/dvc/main.py +++ b/dvc/main.py @@ -5,19 +5,23 @@ main entry point / argument parsing for dvc import sys from dvc.settings import Settings from dvc.logger import Logger +from dvc.config import ConfigError def main(): try: settings = Settings(sys.argv[1:]) instance = settings._parsed_args.func(settings) except Exception as e: - Logger.error("Exception caught while parsing settings", exc_info=True) + # In case we didn't even manage to parse options + exc_info = '-v' in sys.argv or '--verbose' in sys.argv + Logger.error("Settings error: {}".format(e), exc_info=exc_info) return 255 try: ret = instance.run() except Exception as e: - Logger.error("Exception caught in " + instance.__class__.__name__, exc_info=True) + exc_info = settings.parsed_args.verbose + Logger.error("{} error: {}".format(instance.__class__.__name__, e), exc_info=exc_info) return 254 return ret