有没有方法一次性下载gitee所有仓库
现在把很多项目放在gitee中,总是担心那天挂了,项目都没有了。找一个定期把账户下的仓库全部克隆下来。 自己的就先全部clone下来,然后写个脚本定期pull就行了。 为什么不自己建个git或svn。。 shawn_bu 发表于 2021-12-11 22:15
自己的就先全部clone下来,然后写个脚本定期pull就行了。
脚本已经有了,有时在公司建立了仓库忘记在自己电脑克隆下来;就想有没有方法可以自动检测账户的仓库,自动下载同步所有的;没有在本地的也同步下来。
下面是目前使用的同步脚本
import os
import sys
#列出当前目录下所有一级文件夹
def dirpathlist(lpath,outlist):
filelist = os.listdir(lpath)
for f in filelist:
filename = os.path.join(lpath, f)
if os.path.isdir(filename+"\\.git"):
outlist.append(filename)
return outlist
#执行git更新
def git_update(path):
cmd ="git -C "+path+" fetch --all"
#print(cmd)
os.system(cmd)
if __name__ == '__main__':
outlist = dirpathlist(sys.path,[])
#print(outlist)
for f in outlist:
print('fetch {}'.format(f))
git_update(f)
你的担心我也有过,可以考虑选Coding.net做备选,都是大企业。 找了一圈没有合适的,就自己写了一个;新鲜出炉的,还热乎。
打开地址 https://gitee.com/api/v5/swagger#/getV5UserRepos,点击右上角授权获得授权码
把上面的授权码替换掉py中的授权码,运行就可以下载全部的仓库了。
import requests
import json
import jsonpath
import os
access_token="123456789xxxxxxxxxxx"
local_folder="D:\\gitee\\"
if __name__ == "__main__":
pre_url="https://gitee.com/api/v5/user/repos?access_token="+access_token+"&visibility=all&sort=full_name&direction=asc&page="
page=0
while True:
page+=1
print(" ")
print("repo %d" %(page))
URL=pre_url+str(page)+"&per_page=1"
res = requests.get(URL)
d=json.loads(res.text)
if d==[]:
break
folder=jsonpath.jsonpath(d,"$..namespace.path")
proj_name=jsonpath.jsonpath(d,"$.0.name")
ssh_url=jsonpath.jsonpath(d,"$..ssh_url")
path=local_folder+folder+"\\"+proj_name
#print("path: %s" %(path))
print("ssh url:%s" %(ssh_url))
# is repo exsit
if os.path.exists(path+"\\.git"):
git_cmd="git -C "+path+" fetch --all "
#print(git_cmd)
os.system(git_cmd)
else:
git_cmd="git clone "+ssh_url+" "+path
#print(git_cmd)
os.system(git_cmd)
页:
[1]