如何防止phabricator吃掉我的提交历史

 手机用户2502863643 发布于 2023-02-08 13:08

这个场景让我非常讨厌.

杰克在一家软件公司工作,杰克是一名工作程序员,他喜欢编码和经常提交.作为杰克经理的保罗告诉他,我们将开始使用新的代码审查工具phabricator.Jack遵守规定,Jack创建了一个本地分支并开始工作.他经常向当地分支机构添加功能和提交.现在他在一天结束时发送了一个phabricator请求.

arc diff development

杰克团队成员John回顾他的代码并接受他的更改.现在,Jack打开终端并移动到他的存储库目录.Jack键入以下命令以关闭修订并将其代码与开发分支合并.

arc land --onto development

他看到以下消息

Landing current branch 'feature-awesome-features'.
Switched to branch development. Updating branch...
The following commit(s) will be landed:

b2ff76e  Added the foo to bar
33f33ba  Added a really important check which can destroy the project or save it
31a4c9a Added that new awesome feature
8cae3bf rewrote that awful code john wrote
bc54afb  bug fixes

Switched to branch feature-awesome-features. Identifying and merging...
Landing revision 'D1067: Added the awesome feature'...
Rebasing feature-awesome-features onto development
Already up-to-date.
Pushing change...

现在杰克打开Github看他的代码,他美丽的承诺.但他所看到的只是纯粹的恐怖,他的所有承诺都被一次提交所取代,基本上就是这样的

Summary: Added the awesome feature

Test Plan:  do foo bar testing

Reviewers: John

Reviewed By: John

CC: Paul

Differential Revision: http://phabricator.foobar.com/D1067

杰克很伤心,因为他想看到他所有的承诺,杰克认为这个承诺使他看起来像他不是的囤积者.他想解决这个问题,所以他去问一个关于stackoverflow的问题.

That how may he prevent phabricator from eating his commit history.

Evan Priestl.. 19

asherkin的答案解释了这种行为的基本原理,以及为什么这是默认值.

如果您没有发现该参数引人注目,则可以使用该--merge标志arc land来执行--no-ff合并而不是--squash合并.这些合并不会破坏本地提交.

如果在您的设置中设置history.immutable为true .arcconfig,arc land--no-ff默认情况下会合并.

git如果你不喜欢这种行为,你也可以使用原始命令arc land; 它仅为方便起见而提供.

在您的示例中,我们建议创建五个单独的评论 - 正在实施多个不同的想法,并且它们不相关且看起来很容易分离.请参阅编写可审查代码.将错误修正,样式更改和新功能组合到一个更改中就是囤积.

2 个回答
  • 您应该使用本地的git流如git mergegit push,而不是直接.从phabricator arc文档:

    接受更改后,通常会推送它们并关闭修订.arc有几个工作流程,有助于此,通过:

    * squashing or merging changes from a feature branch into a master branch
    * formatting a good commit message with all the information from Differential
    * and automatically closing the revision.
    

    您不需要使用任何这些工作流程:您可以运行git push,hg push或svn commit,然后从Web手动关闭修订.

    arc 是故意压缩你的承诺.

    2023-02-08 13:09 回答
  • asherkin的答案解释了这种行为的基本原理,以及为什么这是默认值.

    如果您没有发现该参数引人注目,则可以使用该--merge标志arc land来执行--no-ff合并而不是--squash合并.这些合并不会破坏本地提交.

    如果在您的设置中设置history.immutable为true .arcconfig,arc land--no-ff默认情况下会合并.

    git如果你不喜欢这种行为,你也可以使用原始命令arc land; 它仅为方便起见而提供.

    在您的示例中,我们建议创建五个单独的评论 - 正在实施多个不同的想法,并且它们不相关且看起来很容易分离.请参阅编写可审查代码.将错误修正,样式更改和新功能组合到一个更改中就是囤积.

    2023-02-08 13:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有