修订提供了命令行工具,使开发人员可以在并行更改上更快地迭代,并减少创建和维护代码审查的开销。
revup amend
和revup restack
通过替换缓慢的rebase节省时间修订需要Python 3.8或更高,并且GIT 2.43或更高。 Revup与Linux,OSX和Windows(有限的测试)一起使用。
在此处遵循说明,为您的操作系统获取最新的GIT版本。修订版仅在较新的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
本教程将指导您使用基本的修订功能。
通过分叉修订,创建新的存储库或使用您拥有的其他存储库来克隆沙盒存储库。创建测试PR可以是垃圾邮件,因此不要对其他人的存储库进行教程。
git clone https://github.com/ < your-name > /revup.git && cd revup
在第一次运行时,您将需要配置GitHub凭据。在此处创建个人访问令牌,并选中“完整回购权限”的框。修订需要此功能才能创建和修改拉动请求。然后运行
revup config github_oauth
并将OAuth复制并粘贴到提示中。
使您的前两个提交将成为两个单独的拉请请求。请注意“主题:”提交消息中的标签 - 这是导致修订以识别并对提交行动的原因。每个单独命名的主题将成为新的拉请请求。
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
您已经上传了您的第一个修订更改!请注意,在Github中,两个分支目标是“主要”。这使他们可以独立合并。
在引擎盖下,修订为您创建并推动这些分支机构,根据需要跟踪和管理依赖关系。
现在,我们将进行有关“ Foo”的新评论。 “相对”标签将确保新评论针对正确的分支。
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
# Either
revup amend HEAD~ --no-edit # Specify a commit to amend
# or
revup amend bar --no-edit # Specify a topic name to amend
revup upload
revup amend
使修改历史上的提交变得容易。您还有其他选择用于修改评论的选项:
git rebase --interactive
与git commit --amend
进行相互作用使用git pull --rebase
进行更改。不要在没有折射的情况下使用git merge
或git pull
因为这会产生合并提交。
默认情况下,如果您拉动但没有更改提交,则不会上传。要覆盖此问题并始终上传,请运行revup upload --rebase
。
[pull]
rebase = true
[rebase]
autoStash = true
我们建议将上述内容添加到.gitconfig
,以使拉力和重新挑战更加容易。
这是一些更方便的修订功能的非详尽介绍。
有关功能的完整说明,请参见文档或运行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)
上传时,将遥控器传递以在AS中创建拉动请求--remote-name
和叉形遥控器AS --fork-name
。
revup --remote-name origin --fork-name myfork upload
修订还可以添加审阅者,受让人和标签以提取请求。将适当的标签添加到主题中的任何提交中。
Reviewers: alice, bob
Assignees: eve
Labels: bug, feature, draft
GitHub用户名可以缩写,并将最短名称与给定前缀匹配。
标签必须完全匹配。 draft
标签很特别,如果存在,将提出拉拉请求,如果被删除,请删除草稿。
修订通常会自动检测您的本地基础分支,并使用它来列出提交和目标评论。您可以选择将任何特定主题定位于另一个分支机构甚至多个分支,在这种情况下,修订将将其用作基本分支(并在后一种情况下创建多个拉力请求)。
A fix for multiple branches
Topic: fix
Branches: main, rel1.1
您也可以在命令行上指定基本分支,尽管这通常是不需要的,除非您在AutoDeTector不知道的分支上工作(请参见下面的Repo Config)。
revup upload --base-branch custom-branch-name
修订将在每个拉的请求中添加2条评论,以为用户和审阅者提供有用的功能。默认情况下启用这些,并随着拉请求更改而自动更新。
评论图提供了与当前拉的请求相对关系的所有本地拉动请求的链接和标题,包括其依赖的所有内容或取决于它的所有内容。这使您可以快速浏览链中的拉动请求。
PatchSets表为给定的拉请求提供了上传的历史记录,以及每个上传之间的差异的链接和摘要。值得注意的是,修订专门处理您重新置换然后上传的情况,并将向您显示带有上游文件的差异。
使用标准配置文件格式可以进行高度配置。每个标志也是一个配置选项,因此用户可以获得所需的确切行为。
在命令行上指定的标志优先考虑,然后是~/.revupconfig
中的config,然后是当前储备金中的.revupconfig
。
Repo In-Repo配置文件的主要用途是设置主分支和发布分支的命名。
例如,如果您的主分支是master
,并且释放分支被称为rel1.1
,则将以下内容提交为repo root中的.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 upload
分支机构,但不会推出或创建评论。revup amend
和上述的后端与处理冲突的合并系统感谢您为修订贡献!您可以开始自己的想法,或者查看其他人兴奋的想法的问题页面。
报告问题时:
revup -v
运行同一命令以提供详细的日志。 修订版由Skydio发布,但不是正式支持的Skydio产品。