首页 > 其他分享 >git项目的地址获取及自动clone.

git项目的地址获取及自动clone.

时间:2024-08-12 11:38:09浏览次数:3  
标签:git clone 地址 set result new path os

痛点:

项目使用的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

相关文章

  • 地理编码之旅,一场地址与坐标的漫游
    随着移动设备的普及和定位服务的发展,在使用导航和位置搜索时,用户期望应用提供的位置是准确无误的,同时用户也希望App可以根据位置提供个性化和本地化服务,比如,在社交媒体上分享位置信息或帮助家庭设备智能联网管理等。想要获取准确的位置,经纬度是确定每个地点位置的精确坐标,但是,使用......
  • 0218-地址解析协议
    环境Time2022-11-20VirtualBox7.0.2Rust1.65.0pnet0.31.0CentOS7前言说明参考:https://docs.rs/pnet_packet/latest/pnet_packet/index.html目标使用两台虚拟机,通过IP地址,获取到目标主机的MAC地址。日常使用的时候,都是使用IP连接服务器,需要使用地址解析协......
  • 普通人快速上手“低代码平台”?最详细教程地址都在这!
    普通人用好低代码平台,可以从以下几个方面入手:一、明确需求和目标了解应用场景:首先明确你想通过低代码平台解决什么问题,比如是快速搭建一个内部管理系统、客户关系管理系统(CRM)还是其他类型的应用。设定具体目标:设定清晰、可衡量的目标,比如完成应用的搭建时间、预期的用户体验......
  • 网络 IP地址 梳理
    IP地址概念分类:A类:000~127,默认子网掩码:255.0.0.0B类:128~191,默认子网掩码:255.255.0.0C类:192~223,默认子网掩码:255.255.255.0D类:224~239E类:240~255A类地址以0开头,第一个字节作为网络号,地址范围为:0.0.0.0~127.255.255.255;B类地址以10开头,前两个字节作为网络号,地址范围是:128.0......
  • 【经验分享】数据结构——哈希查找冲突处理方法(开放地址法-线性探测、平方探测、双散
    目录1.线性探测(LinearProbing)2.平方探测(QuadraticProbing)3.双散列探测(DoubleHashing)4.分离链接法(SeparateChaining)5.再散列(Rehashing)如何解答这些常见问题1.写出处理冲突的方法名称2.构造基于该处理冲突方法的哈希表3.求出该哈希表在等概率情况下查找成功......
  • C++虚函数表、地址详解(x86/x64)
    参考博文:c++虚函数表、地址详解-CSDN博客本文在上述博文的基础上,补充了x64下的验证代码。一.什么是虚函数表,它有什么特点?        虚函数大家都知道是基本用于实现多态的,当父类指针指向子类对象的时候,如何确定调用的函数是父类里的还是子类里面的,这就要用到虚函数表......
  • 3.1、mac地址表
    在对交换机配置进一步讲解之前,我们先来了解一下什么是mac地址、mac地址表、他在交换机中有什么作用。一、mac地址1.MAC地址的组成Mac地址也称为物理地址、硬件地址或链路地址。MAC地址由48位(6字节)二进制数构成,通常以十六进制表示,并以冒号、连字符或点分隔成6个部分,例如00......
  • 【git】如何切换原仓库地址
    文章目录一、打开项目目录二、更换原仓库git1.使用rm-rf.git删除.git文件,或直接删除文件里的.git文件2.初始化仓库重新生成.git3.使用gitremoteaddorigin仓库地址关联到新的远程库地址4、使用gitremote-v查看仓库的关联信息5.使用gitadd.添加文件......
  • 【git】gitee 提交错误,如何回退
    文章目录查看提交记录设定退回到位置提交查看提交记录gitloggitlog如下图所示共2次提交记录最近一次是错误提交(笔者提交是在错误的工作路径上传了)设定退回到位置gitreset--hardhash值gitreset--soft83fcc380d5250599eca************5提交gitpu......
  • Gitlab怎么使用ssh进行克隆
    系统环境和软件环境查看系统环境#cat/etc/redhat-releaseCentOSStreamrelease9#uname-aLinuxCentOSStream9Git2155.14.0-381.el9.x86_64#1SMPPREEMPT_DYNAMICMonOct3023:56:21UTC2023x86_64x86_64x86_64GNU/Linux软件环境#gitlab-railsconsole......