
简化并行代码变更管理的开源工具
Revup是一个开源的命令行工具,旨在简化并行代码变更的管理过程。它可以自动创建和管理多个独立分支链,处理GitHub拉取请求,执行变基检测,并提供审查图和补丁集功能。通过优化代码审查流程,Revup帮助开发团队提高协作效率,适用于需要频繁并行开发的项目。
Revup提供命令行工具,使开发者能够更快地迭代并行更改,并减少创建和维护代码审查的开销。
<p align="center"> <img alt="介绍动图" src="https://yellow-cdn.veclightyear.com/0a4dffa0/251412dc-525a-40ec-8e8c-caa1dea4dc60.gif"/> </p>revup amend和revup restack通过替换缓慢的变基来节省时间。Revup需要Python 3.8或更高版本以及Git 2.43或更高版本。Revup适用于Linux、OSX和Windows(有限测试)。
按照这里的说明获取适用于您操作系统的最新Git版本。Revup使用仅在较新Git版本中存在的标志。
使用pip或您喜欢的包管理器进行安装。
python3.8 -m pip install revup
通过显示帮助页面验证安装是否成功。
revup -h
您也可以从源代码构建以获取最新更新。
git clone https://github.com/Skydio/revup.git && cd revup
make deps && make package && make install
本教程将指导您使用基本的revup功能。
通过复刻 revup、创建新的仓库,或使用您拥有的其他仓库来克隆一个沙盒仓库。 创建测试PR可能会产生垃圾信息,所以不要在他人的仓库上进行教程。
git clone https://github.com/<your-name>/revup.git && cd revup
首次运行时,您需要配置GitHub凭证。在这里创建一个个人访问令牌, 并勾选"完整仓库权限"的复选框。Revup需要这个权限来创建和修改拉取请求。然后运行
revup config github_oauth
并将oauth复制粘贴到提示中。
创建您的前两个提交,这将成为两个独立的拉取请求。 注意提交消息中的"Topic:"标签 - 这是revup识别和处理提交的方式。 每个单独命名的主题都将成为一个新的拉取请求。
echo meh > foo; git add foo git commit -m "My first revup foo" -m "Topic: foo" echo peh > bar; git add bar git commit -m "My first revup bar" -m "Topic: bar" revup upload

您已上传了您的第一个revup更改!注意在GitHub中,两个分支都针对"main"。这允许它们独立合并。
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/b495bb64-8cc6-4176-b80f-94663e97d7ec.png" width="50%"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/4f06107f-3d65-4826-ab9c-651e25757ad5.png" width="50%">
在底层,revup为您创建并推送这些分支,根据需要跟踪和管理依赖关系。
现在我们将创建一个相对于"foo"的新审阅。"Relative"标签将确保新审阅针对正确的分支。
echo deh >> foo; git add foo git commit -m "My second revup foo" -m "Topic: foo2" -m "Relative: foo" revup upload

使用这个简单而强大的模型,您可以一次性上传独立和相关的更改。
现在让我们更新一个拉取请求。
echo heh >> bar; git add bar # 要么 revup amend HEAD~ --no-edit # 指定要修改的提交 # 或者 revup amend bar --no-edit # 指定要修改的主题名称 revup upload

revup amend使修改历史记录中的提交变得容易。您还有其他选择来修改审阅:
git rebase --interactive和git commit --amend使用git pull --rebase来引入更改。不要使用不带rebase的git merge或git pull,因为这会创建一个合并提交。
默认情况下,如果您拉取但未对提交进行更改,revup将不会上传。要覆盖此设置并始终上传,请运行revup upload --rebase。
[pull]
rebase = true
[rebase]
autoStash = true
我们建议将上述内容添加到.gitconfig中,以使拉取和变基更容易。
这是一些更方便的revup功能的非详尽介绍。
有关功能的完整描述,请参阅文档或运行revup -h或revup upload -h以man格式查看文档。
对于您可能没有推送权限的项目贡献,可以配置revup推送到复刻,同时在主项目中创建拉取请求。
为原始仓库和复刻添加git远程。
$ git remote -v
origin https://github.com/ORIGINAL_OWNER/REPO_NAME.git (fetch)
origin https://github.com/ORIGINAL_OWNER/REPO_NAME.git (push)
myfork https://github.com/YOUR_USERNAME/REPO_NAME.git (fetch)
myfork https://github.com/YOUR_USERNAME/REPO_NAME.git (push)
上传时,将创建拉取请求的远程作为--remote-name传递,将复刻的远程作为--fork-name传递。
revup --remote-name origin --fork-name myfork upload
Revup还可以为拉取请求添加审阅者、受理人和标签。在主题的任何提交中添加适当的标签。
Reviewers: alice, bob
Assignees: eve
Labels: bug, feature, draft
GitHub用户名可以缩写,将匹配给定前缀的最短名称。
标签必须完全匹配。draft标签是特殊的,如果存在则会将拉取请求设为草稿,如果移除则会取消草稿状态。
Revup通常会自动检测你的本地基础分支,并使用它来列出提交和目标审核。 你可以选择将任何特定主题指向另一个分支,甚至多个分支,这种情况下revup会将它们作为基础分支(在后一种情况下会创建多个拉取请求)。
针对多个分支的修复
主题:修复
分支:main, rel1.1
你也可以在命令行中指定基础分支,尽管这通常没有必要,除非你正在处理自动检测器不知道的分支(请参阅下面的仓库配置)。
revup upload --base-branch custom-branch-name
Revup会在每个拉取请求中添加两条评论,为用户和审核者提供有用的功能。这些默认启用,并随着拉取请求的变化自动更新。
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/07f3e268-a439-491f-b2c4-3669df545eaf.png" width="40%">审核图提供了与当前拉取请求有相对关系的所有本地拉取请求的链接和标题,包括它所依赖的或依赖它的请求。这允许你快速浏览链式拉取请求。
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/f869780b-316d-4b94-aa0b-2164f9c9ab64.png" width="80%">补丁集表格提供了给定拉取请求的上传历史,以及每次上传之间差异的链接和摘要。值得注意的是,revup特别处理了重新基础(rebase)然后上传的情况,会显示一个不包含上游文件的差异。
Revup可以使用标准配置文件格式进行高度定制。每个标志也是一个配置选项,因此用户可以获得他们需要的确切行为。
命令行上指定的标志优先级最高,其次是~/.revupconfig中的配置,再次是当前仓库中的.revupconfig。
仓库内配置文件的主要用途是设置主分支和发布分支的命名。
例如,如果你的主分支是master,发布分支命名如rel1.1,请在仓库根目录的.revupconfig中提交以下内容。
[revup]
main_branch = master
base_branch_globs =
rel[1-9].[0-9]
rel[1-9].[0-9][0-9]
位于~/.revupconfig的用户配置通过默认设置最常用的标志来节省时间。
例如,在熟悉工作流程后,用户可能不需要确认检查。添加以下行相当于使用--skip-confirm运行。
[upload]
skip_confirm = True
(又称"堆叠差异"、"基于补丁"等)
如果你使用过Gerrit、Phabricator或git邮件列表等工具,你可能已经熟悉这种开发风格。如果你想了解更多,这里有一些关于这个主题的精心撰写的讨论。
Revup的灵感部分来自这个非详尽的开源项目列表,这些项目也支持基于补丁的工作流:
revup upload的分支,但不推送或创建审核。revup amend,是上述工具的后端,具有处理冲突的合并系统。感谢你为revup做出贡献!你可以从自己的想法开始,或者查看问题页面,了解其他人感兴趣的想法。
报告 问题时:
revup -v运行相同的命令,提供详细日志。Revup由Skydio发布,但不是Skydio的官方支持产品。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

