python 检查目录中的所有git存储库,看它们是否干净或脏。测试时间:GitPython == 0.1.7 argparse == 1.2.1 prettytable == 0.7.2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 检查目录中的所有git存储库,看它们是否干净或脏。测试时间:GitPython == 0.1.7 argparse == 1.2.1 prettytable == 0.7.2相关的知识,希望对你有一定的参考价值。

import argparse
import os
import git
from prettytable import PrettyTable

if __name__ == "__main__":
	p = argparse.ArgumentParser()
	p.add_argument("base_dir")
	args = p.parse_args()

	repos = []
	dirs = os.listdir(args.base_dir)
	for path in [os.path.join(args.base_dir, d) for d in dirs]:
		print "Loading repo %s" % path
		try:
			repos.append(git.Repo(path))
		except git.InvalidGitRepositoryError:
			pass

	x = PrettyTable(("Path", "Clean"))
	x.align["Path"] = "l"
	clean = []
	dirty = []
	error = []
	for repo in repos:
		print "Checking repo %s" % repo.path
		try:
			if repo.is_dirty:
				dirty.append(repo)
			else:
				clean.append(repo)
		except git.errors.GitCommandError:
			error.append(repo)

	for repo in sorted(error, key=lambda x: x.path):
		x.add_row((repo.path, "Error!"))
	for repo in sorted(dirty, key=lambda x: x.path):
		x.add_row((repo.path, "Dirty"))
	for repo in sorted(clean, key=lambda x: x.path):
		x.add_row((repo.path, "Clean"))

	print x
	print "%d errored, %d dirty, %d clean, %d total" % (
		len(error),
		len(dirty),
		len(clean),
		len(repos)
	)

以上是关于python 检查目录中的所有git存储库,看它们是否干净或脏。测试时间:GitPython == 0.1.7 argparse == 1.2.1 prettytable == 0.7.2的主要内容,如果未能解决你的问题,请参考以下文章

检查目录是不是为 git 存储库(无需 cd 进入)

提交后将 git 存储库和工作目录复制到另一个位置,在检查状态时给出“未暂存的更改”

有没有办法列出终端中的所有 git 存储库?

计算 git 存储库中的行数

在所有子目录上运行 git pull [重复]

是否可以为子文件夹中的所有存储库执行 Git 状态?