【问题标题】:How to git config cherry-pick -Xignore-all-space as default for Gerrit?如何将 git config cherry-pick -Xignore-all-space 作为 Gerrit 的默认值?
【发布时间】: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)导致了如此多的冲突,因为缩进和空白错误在现有源中得到了修复。

标签: git gerrit


【解决方案1】:

在兼容 bash 的 shell 中解决此问题的方法是添加别名
alias git-cp='git cherry-pick -Xignore-all-space'
将其添加到您的 .bashrc 并源 ~/.bashrc 完成。

要记住一个警告:别名中不允许有空格。

【讨论】:

  • 见第三段。我是一个邪恶的 Windows 用户,喜欢使用鼠标单击一两次来输入我的 git 命令;-)
  • 我正在慢慢转变,因为显然有些东西你不能轻易地从 gui 驱动。
猜你喜欢
  • 2014-07-15
  • 2012-06-24
  • 1970-01-01
  • 2011-10-27
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
相关资源
最近更新 更多