mirror of
https://github.com/ultralytics/yolov5.git
synced 2025-06-03 14:49:29 +08:00
Check git status on upstream ultralytics
or origin
dynamically (#8694)
* Add remote ultralytics and check git status with that * Simplify * Update general.py * Update general.py * s fix Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>
This commit is contained in:
parent
7b72d9a607
commit
afa403a809
@ -310,20 +310,28 @@ def git_describe(path=ROOT): # path must be a directory
|
||||
|
||||
@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'
|
||||
def check_git_status(repo='ultralytics/yolov5'):
|
||||
# YOLOv5 status check, recommend 'git pull' if code is out of date
|
||||
url = f'https://github.com/{repo}'
|
||||
msg = f', for updates see {url}'
|
||||
s = colorstr('github: ') # string
|
||||
assert Path('.git').exists(), s + 'skipping check (not a git repository)' + msg
|
||||
assert not is_docker(), s + 'skipping check (Docker image)' + msg
|
||||
assert check_online(), s + 'skipping check (offline)' + msg
|
||||
|
||||
cmd = 'git fetch && git config --get remote.origin.url'
|
||||
url = check_output(cmd, shell=True, timeout=5).decode().strip().rstrip('.git') # git fetch
|
||||
splits = re.split(pattern=r'\s', string=check_output('git remote -v', shell=True).decode())
|
||||
matches = [repo in s for s in splits]
|
||||
if any(matches):
|
||||
remote = splits[matches.index(True) - 1]
|
||||
else:
|
||||
remote = 'ultralytics'
|
||||
check_output(f'git remote add {remote} {url}', shell=True)
|
||||
check_output(f'git fetch {remote}', shell=True, timeout=5) # git fetch
|
||||
branch = check_output('git rev-parse --abbrev-ref HEAD', shell=True).decode().strip() # checked out
|
||||
n = int(check_output(f'git rev-list {branch}..origin/master --count', shell=True)) # commits behind
|
||||
n = int(check_output(f'git rev-list {branch}..{remote}/master --count', shell=True)) # commits behind
|
||||
if n > 0:
|
||||
s += f"⚠️ YOLOv5 is out of date by {n} commit{'s' * (n > 1)}. Use `git pull` or `git clone {url}` to update."
|
||||
pull = 'git pull' if remote == 'origin' else f'git pull {remote} master'
|
||||
s += f"⚠️ YOLOv5 is out of date by {n} commit{'s' * (n > 1)}. Use `{pull}` or `git clone {url}` to update."
|
||||
else:
|
||||
s += f'up to date with {url} ✅'
|
||||
LOGGER.info(emojis(s)) # emoji-safe
|
||||
|
Loading…
x
Reference in New Issue
Block a user