【20180617】python--repo:project类学习

本文主要介绍了repo库中Project类的关键功能,包括RepoHook、Project和MetaProject类。Project类作为核心,涉及status、upload、sync等子命令的实现。文章详细解析了Project类的构造器、状态判断、信息获取、网络同步、分支管理和git命令封装等方法,展示了其按照git底层命令、基础命令、repo子命令三层结构设计的思路。
摘要由CSDN通过智能技术生成

有日子没更新了...Project类的实现略复杂和庞大因此看了好久,先整体总结一下。

1.概述

我们已经清楚repo借助xml的管理来实现批量git仓的操作,而这些操作又是通过封装git基础命令及底层命令来实现的,那么支撑这些git基础命令和底层命令封装实现的就是Project类,repo所有的子命令最终都会或多或少的调用Project类中的方法。

我们首先需要了解Project类的基本属性,然后按服务的不同子命令分别分析对应方法。

2.数据结构

project.py中定义了多个类,其中最重要的有三个:RepoHook、Project和MetaProject。

2.1 class RepoHook

 (用于定义和调用xml中配置的repohook仓内hook,注意不是为各个gir仓配置来自repo/hooks目录的hook,此功能参考Project类的_InitHooks方法)

  def __init__(self, hook_type,hooks_project, topdir,abort_if_user_denies=False)

  def Run(self, user_allows_all_hooks, **kwargs)

  def _ExecuteHook(self, **kwargs)

2.2 class Project

  def __init__(self,manifest,name,remote,gitdir,worktree,relpath,revisionExpr,revisionId)

  构造器方法中可以看到gitdir、worktree、work_git、bare_git、relpath等路径信息相关参数。

  def IsRebaseInProgress(self)  def IsDirty(self, consider_un

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值