python git api,python git api

  python git api,python git api

  之前一直用简单的极好的函数形式写脚本,前段时间学习框架的时候刚好将类复习了下,果然还是面向对象的编程比较方便,自己以后尽量都用类写一些东西,以下是使用了父类和子类写的脚本。

  (后续备注:我这里基于python-gitlab 2.10.0之前的版本写的脚本,在最新的python-gitlab3.8.1中有些应用程序接口用法可能已经不支持了,使用时建议安装2.10.0的应用程序接口库,pip安装python-git lab==2。10 .0,如果要研究最新的应用程序接口使用方法请参考https://python-git lab . readthedocs . io/en/latest/API/git lab . html)

  # D:\程序文件(x86)\Python36

  # -*-编码=utf-8 -*-

  导入gitlab操作系统

  从pathlib导入路径

  班级登录:

  def __init__(自身,url,私有令牌,项目名称) :

  self.url=url

  self.private_token=私有令牌

  self.project_name=project_name

  定义状态(自身) :

  gl=gitlab .Gitlab(self.url,private _ token=self。私有_令牌)

  返回总帐

  定义搜索(自己) :

  项目=自我。州GL()项目。列表(搜索=自我。项目名称).

  # URL=line。http _ URL _ to _ repo for line in projects if line。name==self。项目名称

  对于项目中的行:

  如果line.name==self.project_name:

  url=line.http_url_to_repo

  pid=line.id

  返回url,pid

  def __str__(self):

  返回列表(self.search())

  吉特雷波类(登录) :

  def __init__(自身,url,私有令牌,项目名称) :

  超级()。__init__(url,私有令牌,项目名称)

  def DOWNRepo(自身、工作目录、分支、报告目录) :

  如果不是os.path.exists(工作目录) :

  os.makedirs(工作目录)

  项目=自己。州GL()项目。获取(列表(自我。search())[1]).

  branches=project.branches.list()

  文件列表=项目。repository _ tree(path=repodir,ref=branch,recursive=True,all=True)

  对于文件列表中的我:

  打印(一)

  dirs=os.path.join(workdir,i[path])

  如果我[type]==tree :

  打印(目录)

  如果不是os.path.exists(目录) :

  os.mkdir(目录)

  repodir=os.path.join(repodir,i[name])

  自我。下行报告(工作目录、分支、报告目录)

  elif I[ type ]= blob :

  打印(目录)

  用打开(dirs,“wb”)作为女:

  项目。文件。raw(file _ path=I[ path ],ref=branch,streamed=True,action=f.write)

  打印( %s %目录)

  #以下为提交代码到工具仓库的功能,我没加入到主程序中

  定义提交代码(自身、分支、工作目录、文件列表) :

  项目=自己。州GL()项目。获取(列表(自我。search())[1]).

  文件列表为代码仓内部的相对路径,比如D:\REPO\JAVA1\JAVA2\est.java,这里仓库名称为JAVA1,那么文件列表就是 JAVA1\JAVA2\est.java

  filepath=os.path.join(workdir,filelist) #本机需要提交的文件的具体路径

  提交路径=文件路径。分割(工作方向)[1]#远程仓库的路径,以/开始作为远程仓库的路径

  数据={

  分支:分支,

  "提交消息":"更新内容",

  操作:[

  {

  操作:创建,

  “file _ path”:提交路径,

  内容 :打开(文件路径, r ,编码=UTF-8 ).read(),

  },

  ]

  }

  commit=project.commits.create(数据)

  if __name__==__main__ :

  CUR_DIR=Path(__file__).解决()。父# Path(__file__).解决())当前脚本的详细路径

  filepath=os.path.join(CUR_DIR, add-list.txt) #将需要下载的服务写到里面

  url=http://10.80.99.35/

  token=rwwrtttrteaRwwww

  repodir=/ #远程仓库的根目录,即下载整个代码仓,如果带/file,就是下载代码仓中文件目录下的文件

  branch=开发 #指定下载的分支

  用open(文件路径, r ,编码=utf-8 )作为女:

  对于f.readlines()中的行:

  reponame=line.strip()

  工作方向=操作系统。路径。join(r d:\ Program Files \ GitlabReposity ,reponame)

  GitREPO(url,token,reponame).下行报告(工作目录、分支、报告目录)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: