Skip to content

Commit

Permalink
Update check_git_status() to run under ROOT working directory (ul…
Browse files Browse the repository at this point in the history
…tralytics#5441)

* Updating check_git_status() to switch to the repository root before performing git ops

* More pythonic

* Linting

* Remove redundant Path() call

* Generalizing the context manager

* Fixing error in context manager

* Cleanup

* Change to decorator

Co-authored-by: Glenn Jocher <[email protected]>
  • Loading branch information
MrinalJain17 and glenn-jocher authored Nov 2, 2021
1 parent 1bb955d commit 09bdabc
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions utils/general.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,19 @@ def __exit__(self, exc_type, exc_val, exc_tb):
return True


class WorkingDirectory(contextlib.ContextDecorator):
# Usage: @WorkingDirectory(dir) decorator or 'with WorkingDirectory(dir):' context manager
def __init__(self, new_dir):
self.dir = new_dir # new dir
self.cwd = Path.cwd().resolve() # current dir

def __enter__(self):
os.chdir(self.dir)

def __exit__(self, exc_type, exc_val, exc_tb):
os.chdir(self.cwd)


def try_except(func):
# try-except function. Usage: @try_except decorator
def handler(*args, **kwargs):
Expand Down Expand Up @@ -203,6 +216,7 @@ def check_online():


@try_except
@WorkingDirectory(ROOT)
def check_git_status():
# Recommend 'git pull' if code is out of date
msg = ', for updates see https://github.com/ultralytics/yolov5'
Expand Down

0 comments on commit 09bdabc

Please sign in to comment.