克隆所有存储库并应用彻底更改。
all-repos的Python项目详细描述
所有回购
克隆所有存储库并应用彻底更改。
安装
PIP安装所有回购协议
CLI
所有repos提供的所有命令行接口提供以下内容
选项:
-h
/--帮助
:显示使用信息-c配置文件名
/--config文件名配置文件名
:使用非默认值 配置文件(默认的all repos.json
可以随环境更改 变量所有回购配置文件名
)。--color{auto,always,never}:在输出中使用颜色(默认值
auto
)。
所有回购完成[选项]
为所有repos存储库添加git clone
tab 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
协作者
(默认值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
):是否包括私有存储库。
目录位置
协作者
(默认值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/
所有回购源代码位桶
镜像路径
(默认值无
):从中克隆存储库的可选镜像。
这是一个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设置
类
此类将接收
源代码设置
字典。
实现 在本例中, 这个可调用的将被传递给 将分支直接合并到 将分支推送到 什么也不做。 对于 首先创建一个模块。此模块必须具有以下API: 此类将接收 这个可调用的将被传递给 自动修复程序对所有存储库应用更改。 添加autofixer cli选项。 选项: 分析cli参数并生成 应用修复程序。 wrapper around 简单的自动修复程序如下: 您可以在all-repos/autofix中找到更多涉及的示例:设置类的一个简单方法是使用
从pre-commit/pre-commit hooks到mirrors-autopep8namedtuple
自动移植包装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
编写自己的推送模块
a
设置
类推送设置中所有值的关键字参数
字典。
def push(设置:设置,分支名称:str)->;无:
settings
类的一个实例。它应该
部署分支。函数将使用
存储库作为cwd
编写自动修复程序
所有repos
提供了几个api函数,可以使用它们编写自动修复程序:所有回购、自动修复库、添加修复程序参数
eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"
1
--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
autofix-lib
原语。退换商品
(回购、配置、提交、自动修复设置)
。这是单独处理的
修复
以允许修复程序调整参数。查找回购
:回调将配置
作为posi可选参数。消息
:提交消息。分支名称
:用于构造分支名称的标识符。所有回购自动修复库修复
eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"
3
应用修补程序
:回调,每个存储库调用一次。cwd
调用函数时将是存储库的根。所有回购.自动修复库.运行
eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"
4
subprocess.run
将打印它将运行的命令。不像
subprocess.run
,除非显式禁用,否则默认为check=true
。自动修复程序示例
eval"$(all-repos-complete -C ~/.../all-repos.json --bash)"
5
所有回购.自动修复.预提交自动更新
:运行预提交自动更新
所有回购、自动修复、预提交、自动移植
:移植
所有回购、自动修复、预提交缓存目录:更新缓存目录
对于Travis CI/Appveyor,用于预提交1.x.
所有回购、自动修复、预提交、flake8迁移:从
预提交/预提交挂钩到pycqa/flake8
所有回购、自动修复、预提交、迁移配置:运行
预提交迁移配置
所有回购协议.autofix.setup py_upgrade
:运行安装py upgrade
整理元数据字段并添加一些缺少的字段。