Git:瓷器的管道?

Git:瓷器的管道?,git,scripting,Git,Scripting,假设我已经编写了一个大量的脚本来做git的工作(支持本地工作流程)。作为第一次切割,我使用了我每天使用的相同命令,但这些当然是“瓷器”,而且有很多 反对 在《瓷器》中;这就是“管道”的作用 好的,我很高兴。只是,我如何确定我的“瓷器”应该翻译成“管道”,我从哪里知道“管道”和我的“瓷器”加起来是什么 我发现最好的建议是 ,但这是对非常大的问题空间中非常有限的一个子集的非常深入但非常粗略的讨论(它似乎以一个默认的挑战结束:“看到了吗?我告诉过你这对凡人来说太难了!”) 具体来说,我使用以下命令:

假设我已经编写了一个大量的脚本来做git的工作(支持本地工作流程)。作为第一次切割,我使用了我每天使用的相同命令,但这些当然是“瓷器”,而且有很多 反对 在《瓷器》中;这就是“管道”的作用

好的,我很高兴。只是,我如何确定我的“瓷器”应该翻译成“管道”,我从哪里知道“管道”和我的“瓷器”加起来是什么

我发现最好的建议是 ,但这是对非常大的问题空间中非常有限的一个子集的非常深入但非常粗略的讨论(它似乎以一个默认的挑战结束:“看到了吗?我告诉过你这对凡人来说太难了!”)

具体来说,我使用以下命令:

git fetch -q
git co -q "$VENDORBRANCH"
git pull -q
git co -q "$TARGETBRANCH"
git pull -q
git co -q -b "$MERGEBRANCH"
git diff --stat ..."$VENDORBRANCH"
git diff ..."$VENDORBRANCH"
git merge -m"Merging $VENDORBRANCH" -q "$VENDORBRANCH"
git commit -m"Bringing $TARGETBRANCH into $MERGEBRANCH."
git push -q --set-upstream origin "$MERGEBRANCH"

至少看起来您正在使用这里的每个命令来完成它的构建目的。这没什么错。当你发现自己正在毁灭或只是承受着不必要的影响时,那就是“你做错了”的症状

所以你认为我可以忽略这样的风险,比如说,
git diff--stat
可能有一天会被重新命名为
git diff--summary
?或者要推送的“-set upstream”选项将被弃用?对此我可能不那么胆小,但最近我偶然遇到了一些讨论,建议在几个陶瓷命令上使用“-瓷”开关的名称确实不好,并建议在将来的版本中重命名该开关。(很抱歉,我现在不能把我的手指放在链接上。)不要“忽略风险”,更重要的是,由于您将这些命令用于其预期目的,以后的一些更改将破坏您所依赖的内容的几率会急剧下降。我要冒险说,没有人敢打破diff--stat,这太基本了。它们可能会切换到更方便或信息更丰富的输出格式,因为这些命令的输出并不用于脚本使用,但您也不依赖于此。面对任性的开发人员,没有什么是安全的。没有人有足够的勇气去面对,这种改变要么会发生,要么不会发生。不用担心。我很确定关于脚本的警告是关于不信任git使用任何特定的输出格式;Git确实无法改变逻辑上所做的事情,例如,
pull
merge
,因此上述操作应该是安全的。基本上,如果您开始解析任何给定命令的输出,为了安全起见,它应该是管道的一部分。但是,我绝对建议将
set-e
放在脚本的开头,以便在脚本失败时自动中止运行其他命令。