【发布时间】:2015-01-08 05:03:50
【问题描述】:
作为序言,我在日常工作中同时使用 Git 和 Gerrit。一个常见的工作流程是挑选一个正在审查的补丁集,解决与合并的任何冲突,然后进行更多更改并修改提交,然后再将新补丁集推送回 Gerrit。
我发现 git cherry-pick 在默认情况下很难处理琐碎的空白更改,并且使用 -Xignore-all-space 的合并策略选项通常会显着减少需要解决的冲突数量补丁集的精选。我希望这始终是樱桃挑选期间的默认行为,而不必指定选项,但还没有找到在 .gitconfig 中设置它的方法
显而易见的解决方案是简单地为 Git 创建一个别名,但是在使用 Gerrit 时,有一个方便的 cherry-pick 命令,可以通过单击以下形式的按钮将其复制到剪贴板:
git fetch ssh://user@hosturl:port/remote/repo/path refs/changes/id/change/patch-set && git cherry-pick FETCH_HEAD
需要用别名替换“cherry-pick”部分与我现在需要添加“-Xignore-all-space”选项一样不方便。手动输入 Gerrit 补丁集引用的详细获取是荒谬的,不幸的是,我无法更改 Gerrit 项目或任何非本地机器。
有没有办法 git config 一个默认的cherry-pick 合并策略选项,或者可能是一种使用钩子脚本或触发器来完成此操作的方法?
【问题讨论】:
-
是“refs/changes/id/change/patch-set”字面量,还是一些动态名称?
-
动态。第一部分取决于您要从 gerrit 获取的项目、分支、更改和补丁集。
-
你在哪里输入命令?
-
也许你应该解决问题的根源。白色空间。我们也遇到了同样的问题(C++),我们现在使用uncrusitfy 自动格式化我们的代码我几乎要说这是您需要做的最重要的事情之一,以便能够跨分支挑选更改并拯救自己很多工作
-
@uncletall 具有讽刺意味的是,使用自动化插件(codemaid)导致了如此多的冲突,因为缩进和空白错误在现有源中得到了修复。