Github的堆栈差异支持

ghstack的Python项目详细描述


ghstack

方便地将diff堆栈作为单独的pull请求提交到GitHub

pip3 install ghstack

仅限Python3.6及更高版本。

如何使用

在master上准备一系列提交,然后运行ghstack。这个 工具将为堆栈上的每个提交推送和创建拉取请求。

{ 1个}如何在现有的堆栈上叠加另一个pr?假设 您已经检查了现有PR的最新提交,只是 git commit一个新的提交,然后运行ghstack

如何修改PR?只需编辑有问题的提交,然后 再次运行ghstack如果提交在堆栈的顶部, 您可以使用git commit --amend编辑它;否则,您将拥有 使用git rebase -i直接编辑提交。

如何调整基值?显而易见的方式:git rebase origin/master。 别这样,git mergeghstack如果你 做那件事。(还有一个更根本的原因 不行:因为每次提交都是一个单独的PR,所以必须 解决eachpr中的冲突,而不仅仅是整个堆栈中的冲突。)

如何启动新功能?只需在新的 开始新的分支

警告。您将无法使用 正常的github用户界面,因为它们的分支库不是主用户界面。对于 Pythorch储存库,我们有一个特殊的机制来着陆差异; 如果您需要一种方法将这些提交放在常规github上 存储库,对问题给出一个呼号,我们将添加此功能。

提交的请求结构

本地提交堆栈中的每个提交都被提交到一个单独的 拉请求并将提交推到三个分支:

  • gh/username/1/base-把它想象成“主人”:它是基础 你的承诺所基于的分支。它从不被强迫; 每当您重新定位本地堆栈时,我们会在 从真正的上游主基地

  • gh/username/1/head-这个分支是您的更改,位于基础之上 分支。就像基地一样,它永远不会被强压。我们打开一个请求 在这个分支上,请求合并到基中。

  • gh/username/1/orig-这是根据本地 收到。github pull请求从未看到此提交,但如果您希望 例如,为了得到一个“干净”的提交,因为 要处理来自另一台计算机的提交,这是最好的方法 为了得到它

开发人员注释

我们有测试,使用模拟github graphql服务器!有多酷? 使用python test_ghstack.py运行这些测试

设计约束

github的设计有一些奇怪的地方,这导致了 关于这个工具的设计决策。

  1. 在GitHub上创建PR时,它总是在 基础分支存在的存储库。因此,我们必须 将分支推送到所需的上游存储库 要在上创建的prs。这会导致很多陈腐的 到处都是树枝,你得另设一些 修剪这些树枝的机制

  2. 分支名称与请求号不对应。而这个 太好了,我们没有办法保留请求 号码,所以在我们开门之前我们不知道会是什么 拉请求,但如果没有 分支。

里普利橱柜

通过Conor McBridge,本节记录了值得 提及。

非堆栈模式。ghstack在处理整个堆栈时 上载更新,但不必这样;您可以 假设您可以要求ghstack只处理最上面的 把剩下的都留下轻松而迷人 这样做的方法是编辑堆栈选择算法 查看单个提交,而不是来自 将底部合并到头部。

听起来不错,但是你尝试一下,就会发现两件事:

  1. 如果在提交之前排除提交,则这是错误的 最后,您将得到一个基于“literal”的基本提交 在git存储库中提交。但这和 使用先前上载的基本提交 是人工建造的。

  2. 您还需要做额外的工作来提取最新的堆栈 写入请求正文

所以,这并非不可能,但还需要一些工作。 你必须弄清楚什么是真正的基本提交,是否 或者不需要进行升级,也可以重写堆栈呈现 代码。

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

推荐PyPI第三方库


热门话题
java什么会导致程序在它似乎拥有的监视器上被阻止?   java Android studio设置视图的背景色   java我可以保存一个文本文件而不给用户修改它的能力吗?   pdfbox PDFBOX2。0:java堆堆栈错误   java是维护和操作AllowList的有效方法   JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/asd性爱   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java调试空指针异常   java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项   java为JPanel设置边框上的笔划   并发@Schedule方法的java行为   如何在Java中使用泛型与语言运算符和泛型类扩展数   java Rhino Javascript如何为异常堆栈跟踪标记字符串源   运行可执行jar时发生java错误,无法找到或加载主类