Насколько я понимаю из вашего вопроса, вы хотите добавить текущее имя git-репо с каждой строкой из git log
.
Поскольку вы пометили Python, это может быть длинным шагом, но вы можете использовать GitPython , чтобы определить, являются ли подпапки внутри папки репозиториями git. Затем вы можете открыть команду git log
с помощью subprocess.Popen()
и распечатать каждую строку с именем репозитория из stdout.
Обязательно наберите pip install GitPython
перед запуском этого кода.
Вот пример:
from os import listdir
from os import chdir
from os import getcwd
from os.path import abspath
from git import Repo
from git import InvalidGitRepositoryError
from subprocess import Popen
from subprocess import PIPE
# Current working directory with all git repositories
# You can change this path to your liking
ROOT_PATH = getcwd()
# Go over each file in current working directory
for file in listdir(ROOT_PATH):
full_path = abspath(file)
# Check if file is a git repository
try:
Repo(full_path)
# Change to directory
chdir(full_path)
# Run git log command
with Popen(
args=['git', 'log', '--pretty=format:"%h - %an, %ar : %s"'],
shell=False,
stdout=PIPE,
bufsize=1,
universal_newlines=True,
) as process:
# Print out each line from stdout with repo name
for line in process.stdout:
print('%s %s' % (file, line.strip()))
# Change back to path
chdir(ROOT_PATH)
# If we hit here, file is not a git repository
except InvalidGitRepositoryError:
continue
Это работает для меня, когда я запускаю скрипт внутри папки со всеми моими git-репозиториями.
Примечание: Вероятно, есть лучший способ сделать это с помощью самой команды git
или с помощью bash.