痛点:
项目使用的git项目过多,我的目前60多个。
文件夹当时创建的时候比较杂乱。 后期找项目比较困难。
执行方案:
迁移项目,根据git地址内的文件夹进行对应的文件夹创建,
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import os, subprocess
def get_folder_list(path=os.getcwd(), _set=set()):
# 遍历所有文件夹。
for item in filter(lambda x: os.path.isdir(os.path.join(path, x)), os.listdir(path)):
item_path = os.path.join(path, item)
# 执行git remote -v 获取项目的git地址。
result = subprocess.getoutput("cd {} && git remote -v".format(item_path)).split(" ")
if len(result) > 2 and (result[2].startswith("ssh") or result[2].startswith("http")):
if result[2].startswith("http"):
print(item_path, result[2])
_set.add(result[2].replace(" (push)", ""))
else:
# 已经获取到git地址的文件夹无需继续遍历,未获取到的继续递归遍历。
get_folder_list(item_path, _set)
return _set
def gitclone(new_path, gitPath):
# 去掉前面的http://xxx.com/ ssh://xxx.com/ 和后面的xxx.git
path = new_path + "/".join(gitPath.split("/")[3:-1])
if not os.path.exists(path):
os.mkdir(path)
cmd = "cd {} && git clone {}".format(path, gitPath)
print(cmd)
# 执行git clone 命令, 记得提前配置好全局的用户名和密码。
subprocess.getoutput(cmd)
if __name__ == "__main__":
# 设置要检索的项目路径。
old_path = "D://proProject"
new_path = "D://proProjects"
_set = get_folder_list(old_path, set())
print("来源项目git集合信息:", len(_set), _set)
for one in _set:
gitclone(new_path, one)
pass
_new_set = get_folder_list(new_path, set())
print("目标项目git集合信息:", len(_new_set), _new_set)
print("缺失下载失败git地址集合:", _set - _new_set)
标签:git,clone,地址,set,result,new,path,os
From: https://www.cnblogs.com/yswb/p/18354659