V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
caixiangyu17
V2EX  ›  奇思妙想

想做一个 pull request 的工具,问问大家是不是伪需求?

  •  
  •   caixiangyu17 · 2023-10-18 06:40:45 +08:00 · 1706 次点击
    这是一个创建于 412 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近发现 github ,gitfarm 或者 bitbucket 都没有 pull request 的版本。想问问大家的工作流程是怎样的。

    我们使用内部工具,创建 pr 的流程和这些主流的 git 平台不太一样,所以描述一下,看看是不是可以作为一个增强体验的方式来实现一下。


    这是 github 的流程

    当一个 pr 被创建了,就会有人 review ,然后发布一些评论。那么我根据这个评论就回去修改的我的代码,然后再次提交。这时候 pr 就被更新了。然后我去问提意见的人重新 review ,但是这时候,reviewer 并不能看见我改了什么,而是整体和 master 的区别。所以这时候如果 pr 略微复杂,而修改意见也略微多一些,对于 reviewer 来说,就一些混乱,可能需要在看一遍整体代码。

    上面的流程如果是在评论之后我又 commit 了一个新版本的话,还可以查看具体的 commit ,不过如果我用了 amend 来 commit ,则就没有办法看到了。


    这是改进流程

    改进流程呢就变成,当第一次创建 pr 之后,这个 pr 的版本号是 1 ,状态是 private 。然后 private 的 pr 只有创建者可以查看。然后创建者点击公开,这时把这个版本置成 public 。对于 pr 状态,private 只有创建者能看见,public 则是公开用来 review 的。然后有人在 1 这个版本上面留言(这还有个好处是,不会像 github 上有留言对应的代码不见了)。创建者修改代码,再次提交。 提交时候有个逻辑,如果最高版本号是 public ,则创建一个更新的版本,状态为 private 。如果最高版本是 private ,则直接更新。这样当创建者修改好了代码,再公开这个版本。这时则有两个 public 的版本,可以分别产看 1 ,2 ,以及 1-2 区别。这样每次 reviewer 只需要看一下 1-2 的区别,就可以大概了解代码是否按照要求修改了。同理,可以有更多版本。


    不知道大家听完觉得这个需求是不是伪需求?是不是已经有什么流程可以解决这个问题,只是我对 github 部熟悉?如果我做一个这样的插件,或者是服务。大家会不会有兴趣去用呢? 当然部署便捷性,以及安全性也是要考虑的。不过我想就先从可行性的角度来咨询一下。

    11 条回复    2023-10-26 07:16:58 +08:00
    gitrebase
        1
    gitrebase  
       2023-10-18 08:17:09 +08:00
    看了描述,要解决的问题就是 [当使用 git commit --amend 时,没法查看两次 commit 之间的差异] 吧

    那感觉像是伪需求,一般没必要使用 --amend ,就正常 commit 就行,如果最后感觉 commit 次数太多了,就在被 merge 之前自己 rebase 一下就行,或者直接 squash merge 就行
    robinshen
        2
    robinshen  
       2023-10-18 08:50:08 +08:00
    这个也是当初做 OneDev ( https://github.com/theonedev/onedev) 的考虑之一,可以显示自上次 review 以来的所有改动,对 amend/rebase 也正常工作。

    后来 github 也加入了 “show changes since last review” 功能, 不过对于 amend/rebase 不支持。
    assassins1234567
        3
    assassins1234567  
       2023-10-18 09:51:30 +08:00 via iPhone
    gerrit 是不是可以满足你的需求。
    wu00
        4
    wu00  
       2023-10-18 10:11:37 +08:00
    1# 说得对
    感觉更多的是规范问题,已推到远端的 commit 都能被--amend ,那各种--force 你又如何应对
    robinshen
        5
    robinshen  
       2023-10-18 10:41:42 +08:00
    如果是个人开发分枝,不与他人共享的话,amend/rebase 不会带来什么负面影响。对于公共分枝可依设置规则来拒绝 force push
    caixiangyu17
        6
    caixiangyu17  
    OP
       2023-10-18 10:58:48 +08:00
    @gitrebase 恩感觉有个规范可以解决大多数的问题,只是没那么清晰。比如 review 留言之后,我有提交了一个 commit ,然后发现有东西落下了,然后就有提交了若干个,这时对于 reviewer 来说,有多了若干个 commit ,则看起来又麻烦了,当然也有办法解决,把最新几个 commit 再 squash 一下,变成一个。不过整体来说略微麻烦,而且新手操作需要又一个标准流程。所以也是我考虑做这种一键快速的方式。
    caixiangyu17
        7
    caixiangyu17  
    OP
       2023-10-18 11:02:44 +08:00
    @robinshen
    #2 哇这个项目看着真不错。很高级
    #5 我觉得所有人都不应该有 master 权限,只能靠 pr 合并,其他 branch ,每个人都是自己的,想怎么折腾随意。最后 pr 之前,搞好了就行。而且 pr 也应该有很多 review 才能被允许 merge ,包括 reviewer approve ,dry run ,unit test 等。
    caixiangyu17
        8
    caixiangyu17  
    OP
       2023-10-18 11:03:33 +08:00
    @wu00 如上条回复所说哈~
    caixiangyu17
        9
    caixiangyu17  
    OP
       2023-10-18 11:04:17 +08:00
    @assassins1234567 这个看起来和我想做的有点像呢,不知道具体的操作流程是什么,不过感觉类似。
    rekulas
        10
    rekulas  
       2023-10-25 22:16:14 +08:00
    @robinshen 看到这库的第一眼 脑海中自然而然冒出来了中文名字 王德五
    robinshen
        11
    robinshen  
       2023-10-26 07:16:58 +08:00
    @rekulas 哈哈,我一度想给起个中文名字叫王德福,好记上口
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1203 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:34 · PVG 02:34 · LAX 10:34 · JFK 13:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.