背景 虽然Gitee仓库蓬勃发展,趋势很好,但是客观来讲,和Github的易用性还是有一定差距的。
当初由于Github私有仓库数量的限制,所以把很多私有的小项目的仓库都放到了gitee。
最近随着Github的免费仓库不再限制数量,所以把私有仓库和公有仓库都挪到一起放到github挪上了日程。
由于建的仓库有些多,所以手动逐个挪比较费时间,而且学习一下GitHub的API操作,对以后的工作可能会有帮助,所以我采取了脚本的方式完成这个事情。
下面分享我做这个事情的几个步骤。
步骤 获取项目列表 克隆 github创建项目API 上传 归档 获取Gitee项目列表: 没有找到gitee的API,所以采取手动浏览器解析网页的方式获得仓库列表,这里主要获得了仓库名和仓库的描述。
在gitee网站执行JS脚本 l=[] $.each($("#search-projects-ulist div.list-warpper"),function(i,v){ dl=$(".description",v); console.log(dl); des=dl.length>0?dl[0].textContent:""; j={ "path":v.attributes["data-path"].value, "des":des+" https://gitee.com/"+v.attributes['data-path'].value }; l.push(j); }) 其中除了l=[],需要手动翻页,每次翻页都要执行一次。
得到的l是所有项目列表。
JSON.stringfy(l); 输出所有。
然后导入到python。 import json j=json.loads(s) l=[] for i,v in enumerate(j): l.append({ "name":os.path.split(v["path"])[1], "path":v["path"], "des":v["des"], }) 处理后示例 [{'name': 'repo1', 'path': 'username/repo1', 'des': ' https://gitee.com/username/repo1'}, {'name': 'repo2', 'path': 'username/repo2', 'des': ' https://gitee.com/username/repo2'}] 克隆项目 这里使用python调用linux 下 git客户端完成
for i,v in enumerate(l): os.system(f"git clone [email protected]:{v['path']}.git {v['name']}") 创建Github项目列表 这里采用了PyGithub库。
$ pip install PyGithub 需要设置Github的token,申请token参看 https://github.com/settings/tokens
...