add git-fsck-all
parent
206e73dc5b
commit
fdf412cca9
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
find all git repositories (and git working directories) starting from the
|
||||
current directory and perform a 'git fsck' on them.
|
||||
"""
|
||||
|
||||
from __future__ import division, print_function
|
||||
|
||||
from colorama import Fore
|
||||
|
||||
import contextlib
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
|
||||
def git_directories(startdir):
|
||||
for dirpath, dirnames, _ in os.walk(startdir):
|
||||
if set(['info', 'objects', 'refs']).issubset(set(dirnames)):
|
||||
yield dirpath
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def working_directory(directory):
|
||||
saved_cwd = os.getcwd()
|
||||
os.chdir(directory)
|
||||
yield
|
||||
os.chdir(saved_cwd)
|
||||
|
||||
|
||||
for git_directory in git_directories('.'):
|
||||
with working_directory(git_directory):
|
||||
print('\n{}:'.format(os.getcwd()))
|
||||
ret = subprocess.call(['git', 'fsck'])
|
||||
if ret != 0:
|
||||
print((Fore.RED + 'git fsck is unhappy with {}' + Fore.RESET)
|
||||
.format(git_directory))
|
Loading…
Reference in New Issue