克隆所有存储库并应用彻底更改。

all-repos的Python项目详细描述


构建状态coverage status

所有回购

克隆所有存储库并应用彻底更改。

安装

PIP安装所有回购协议

CLI

所有repos提供的所有命令行接口提供以下内容 选项:

所有回购完成[选项]

为所有repos存储库添加git clonetab completion。

需要jq来工作。

添加到.bash配置文件

eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"

所有回购克隆[选项]

将所有存储库克隆到output\u目录中。如果再次运行,则此命令 将更新现有存储库。

选项:

  • -j作业/--作业:将使用多少个并发作业来完成 手术。指定0或-1以匹配CPU数量。(默认值8)。

调用示例:

  • 所有repos clone:克隆all repos.json中指定的存储库
  • 所有repos clone-c all-repos2.json:使用非默认配置克隆 文件名。

所有回购查找文件[选项]模式

类似于分布式的git ls files grep-p模式

参数:

  • 模式:python正则表达式 匹配。

选项:

  • --repos with matches:仅打印具有匹配项的存储库。

调用示例:

  • 所有repos find files setup.py:全部查找setup.py文件。
  • 所有repos查找文件--repos setup.py:查找包含 asetup.py

所有回购grep[选项][git_grep_选项]

类似于分布式的git grep…

选项:

  • --repos with matches:仅打印具有匹配项的存储库。
  • git_grep_options:其他参数将传递给git grep。 有关可用选项,请参见git grep--help

调用示例:

  • 所有repos grep预提交--"requirements*.txt":查找所有存储库 它们在需求文件中列出了预提交。
  • 所有repos grep-l six--setup.py:查找不包含 包含六个

所有回购列表回购[选项]

列出所有克隆的存储库名称。

所有回购手册[选项]

在回购协议之间交互应用手动更改。

注意所有回购手册将始终在"交互式"自动修复模式下运行。

注:所有回购协议"手动"需要"自动修复程序"选项。

选项:

  • 自动修复选项是 一个自动修复程序,支持所有自动修复程序选项。
  • --分支名称分支名称:覆盖自动修复程序分支名称(默认值 所有回购手册)。
  • --commit msg commit(必需):设置自动修复程序提交消息。

所有repos sed[选项]表达式文件名

类似于分布式 git ls files-z——文件名xargs-0sed-i表达式

注意:这假定是GNU SED。如果您使用的是MacOS,请使用自制软件安装GNU sed

brew install gnu-sed

# Add to .bashrc / .zshrcexportPATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"

参数:

  • 表达式:sed程序。例如:s/hi/hello/g
  • 文件名:filenames glob(传递给git ls files)。

选项:

  • 自动修复选项 一个自动修复程序,支持所有自动修复程序选项。
  • -r/--regexp extended:在脚本中使用扩展正则表达式。 有关详细信息,请参见手册。
  • --分支名称分支名称覆盖自动修复程序分支名称(默认值 所有回购)。
  • --commit msg commit_msg覆盖自动修复程序提交消息。(默认 git ls files-z——文件名xargs-0sed-i…表达式)。

调用示例:

  • 所有reposed's/foo/bar/g'--'*':在所有文件中将foo替换为bar

配置

配置文件大致如下:

{"output_dir":"output","source":"all_repos.source.github","source_settings":{"api_key":"...","username":"asottile"},"push":"all_repos.push.github_pull_request","push_settings":{"api_key":"...","username":"asottile"}}
  • output_dir:当所有repos clone是 运行.
  • source:模块导入到asource的路径,请参见下面的内置 源模块以及编写自己的说明。
  • 源代码设置:源类型特定的设置,源模块的 文档将解释各种可能的值。
  • push:模块导入路径apush,请参见下面的内置push 模块以及自己编写的说明。
  • 推送设置:推送类型特定的设置,推送模块的 文档将解释各种可能的值。
  • include(默认""):用于选择存储库的python regex。只有 将包含与此正则表达式匹配的存储库名称。
  • exclude(默认值为"^$"):用于排除存储库的python regex。 与此正则表达式匹配的存储库名称将被排除。
  • 所有分支(默认值false):是克隆所有分支还是 只是默认的上游分支。

源模块

所有回购源json文件

克隆文件中列出的所有存储库。文件必须格式化为 以下:

{"example/repo1":"https://git.example.com/example/repo1","repo2":"https://git.example.com/repo2"}

必需的源代码设置

  • 文件名:每行包含一个存储库的文件。

目录位置

output/
+--- repos.json
+--- repos_filtered.json
+--- {repo_key1}/
+--- {repo_key2}/
+--- {repo_key3}/

所有回购.source.github

克隆github上用户可用的所有存储库。

必需的源代码设置

  • api_key:用户将以其身份登录的api密钥。
    • 使用设置选项卡创建 个人访问令牌。
    • 运行所需的最小范围是公共回购 需要repo才能访问专用存储库。
  • 用户名:您将以其身份登录的GitHub用户名。

可选的源代码设置
  • 协作者(默认值false):是否包括 不是所有,但可以作为合作者参与。
  • forks(默认值false):是否包括属于forks的存储库。
  • private(默认值false):是否包括私有存储库。

目录位置

output/
+--- repos.json
+--- repos_filtered.json
+--- {username1}/
    +--- {repo1}/
    +--- {repo2}/
+--- {username2}/
    +--- {repo3}/

所有回购信息。source.github\u org

克隆github上组织的所有存储库。

必需的源代码设置

  • api_key:用户将以其身份登录的api密钥。
    • 使用设置选项卡创建 个人访问令牌。
    • 运行所需的最小范围是公共回购 需要repo才能访问专用存储库。
  • 组织:要从中克隆的组织

可选的源代码设置
  • 协作者(默认值true):是否包括 不是所有,但可以作为合作者参与。
  • forks(默认值false):是否包括属于forks的存储库。
  • private(默认值false):是否包括私有存储库。

目录位置

请参阅的目录结构 all_repos.source.github

所有回购源.gitolite

克隆上用户可用的所有存储库 gitolite主机。

必需的源代码设置

  • 用户名:以ssh方式连接到服务器的用户(通常为git
  • 主机名:Gitolite服务器的主机名(例如git.mycompany.com

gitolite api通过ssh提供。假设当所有回购协议克隆时 调用时,可以使用用户名和主机名建立ssh连接。 在此处配置以查询该API。

可选的源代码设置
  • 镜像路径(默认值):从中克隆存储库的可选镜像。 这是一个python格式的字符串,可以使用变量repo\u name

    这可以是git理解的任何东西,例如另一个远程服务器(例如。 gitmirror.mycompany.com:{repo_name})或本地路径(例如 /gitolite/git/{repo_name}.git)。

目录位置

output/
+--- repos.json
+--- repos_filtered.json
+--- {repo_name1}.git/
+--- {repo_name2}.git/
+--- {repo_name3}.git/

所有回购源代码位桶

克隆Bitbucket上用户可用的所有存储库。

必需的源代码设置

  • 用户名:您将以其身份登录的Bitbucket用户名。
  • app_password:上述用户登录时使用的身份验证方法
    • 在帐户设置中创建应用程序密码。
    • 我们需要范围:存储库->;读取

目录位置

output/
+--- repos.json
+--- repos_filtered.json
+--- {username1}/
    +--- {repo1}/
    +--- {repo2}/
+--- {username2}/
    +--- {repo3}/

编写自己的源代码

首先创建一个模块。此模块必须具有以下API:

a设置

此类将接收 源代码设置字典。

实现设置类的一个简单方法是使用namedtuple

Settings=collections.namedtuple('Settings',('required_thing','optional'))Settings.__new__.__defaults__=('optional default value',)

在本例中,必需的设置是一个必需的设置 而可选的可以省略(并将获得默认值 "可选默认值")。

定义列表_回购(设置:设置)->;dict[str,str]:可调用

这个可调用的将被传递给settings类的一个实例。它必须 从{repo-name:repository-url}返回映射。回购名称是 输出目录中的目录名

推动模块

所有回购、推送、合并到主机

将分支直接合并到master并按下。它运行的命令看起来 大致如下:

eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"
0

可选按键设置

  • 快进(默认值:false):如果true,则执行快进 合并(--ff only)。如果false,则创建合并提交(--no ff)。

所有回购、推送、Github拉取请求

将分支推送到原点,然后为 分支:

必需的按键设置

  • api_key:用户将以其身份登录的api密钥。
    • 使用设置选项卡创建 个人访问令牌。
    • 运行所需的最小范围是公共回购 需要repo才能访问专用存储库。
  • 用户名:您将以其身份登录的GitHub用户名。

可选按键设置

  • fork(默认值:false):(如果适用)将创建并推送fork 而不是上游存储库。然后将发出拉取请求 到上游仓库。

所有回购。推送。只读

什么也不做。

按键设置

对于readonly

编写自己的推送模块

首先创建一个模块。此模块必须具有以下API:

a设置

此类将接收推送设置中所有值的关键字参数 字典。

def push(设置:设置,分支名称:str)->;无:

这个可调用的将被传递给settings类的一个实例。它应该 部署分支。函数将使用 存储库作为cwd

编写自动修复程序

自动修复程序对所有存储库应用更改。

所有repos提供了几个api函数,可以使用它们编写自动修复程序:

所有回购、自动修复库、添加修复程序参数

eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"
1

添加autofixer cli选项。

选项:

  • --dry run:显示将要发生的事情,但不要推动。
  • -i/--交互式:交互式批准/拒绝修复。
  • -j作业/--作业:将使用多少个并发作业来完成 手术。指定0或-1以匹配CPU数量。(默认值1)。
  • --限制:要处理的最大回购数量(默认:无限制)。
  • --author author:重写提交作者。直接传递给 git提交。例如:--author='herp derp<;herp.derp@umich.edu>;'
  • --repos[repos[repos…]:改为针对特定存储库运行。 这对于xargs自动修复程序特别有用…--回购。这可以 用于指定不由所有repo管理的存储库

所有来自cli的repos.autofix库

eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"
2

分析cli参数并生成autofix-lib原语。退换商品 (回购、配置、提交、自动修复设置)。这是单独处理的 修复以允许修复程序调整参数。

  • 查找回购:回调将配置作为posi可选参数。
  • 消息:提交消息。
  • 分支名称:用于构造分支名称的标识符。

所有回购自动修复库修复

eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"
3

应用修复程序。

  • 应用修补程序:回调,每个存储库调用一次。cwd 调用函数时将是存储库的根。

所有回购.自动修复库.运行

eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"
4

wrapper aroundsubprocess.run将打印它将运行的命令。不像 subprocess.run,除非显式禁用,否则默认为check=true

自动修复程序示例

简单的自动修复程序如下:

eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"
5

您可以在all-repos/autofix中找到更多涉及的示例

  • 所有回购.自动修复.预提交自动更新:运行预提交自动更新
  • 所有回购、自动修复、预提交、自动移植:移植自动移植包装pre-commit/pre-commit hooksmirrors-autopep8
  • 所有回购、自动修复、预提交缓存目录:更新缓存目录 对于Travis CI/Appveyor,用于预提交1.x.
  • 所有回购、自动修复、预提交、flake8迁移:从 预提交/预提交挂钩pycqa/flake8
  • 所有回购、自动修复、预提交、迁移配置:运行 预提交迁移配置
  • 所有回购协议.autofix.setup py_upgrade:运行安装py upgrade 整理元数据字段并添加一些缺少的字段。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在IE10中重新加载另一个帧时,internet explorer Java小程序失败/消失   ThreadLocal变量的java性能   java系统。出来println不是打印输出   java从JAXB类获取元素属性   java组织。天啊。科尔巴。包裹。InvalidName:IDL:omg。org/CORBA/ORB/InvalidName:1.0   java有没有办法让非事务连接抛出异常?   java是否有任何方法可以使用JdbcTemplate和查询/条件Fluent API   javajpa级联类型。刷新不工作?   未考虑java Maven依赖关系管理   java MySQL MBR包含抛出MySQLExceptionError的语句   java验证整数并将其设为5位数   java发现了循环依赖的问题   java Hibernate left join fetch到使用@ManyToMany关联映射的softdeleted实体生成无效查询?   JavaH:commandButton多个操作:下载文件并呈现ajax表   Google Contacts API在Java、C#、Python或Ruby中是否有一个Hello World示例?