自动安装bash_使用Bash进行自动选择

自动安装bash

我在Git仓库中管理我的Jekyll博客。 我的发布过程使用2个分支:

  • master包含所有制作内容
  • feature/newposts拥有新的博客文章,随时可以发布, 每个帖子一次提交

要发布现有帖子:

  1. 我在feature/newposts分支中检查了要发布的帖子
  2. 然后,获取关联的提交
  3. 樱桃在master分支中挑选
  4. 最后,我推

虽然没有那么慢,但这却很无聊。 这篇文章解释了我如何使用bash magic“自动化”上述过程。

日期

Bash用户知道如何获取当前日期:

date

输出:

Sun Aug  5 12:15:23 CEST 2018

但是,Jekyll博客文章文件名的格式为2018-08-05-xxx-yyy-zzz.adoc 看一下手册页,相关语法为:

date + '%Y-%m-%d'

它输出预期的字符串:

2018-08-05

路径

要获取Git树中文件的路径,需要使用git ls-tree命令:

git ls-tree-r feature/newposts  | grep`date + '%Y-%m-%d'`

这样产生:

100644 blob 2cb14109c9a41b67609b93a9fea904735d082a5c	_posts/2018-08-05-spring-boot-integration-intellij-idea.adoc

请注意,哈希是Blob的哈希,而不是提交的哈希。 从这一点出发,有两种方法:

  1. 通过该Blob获取提交
  2. 使用此路径获取提交

出于没有真正的原因,我选择了第二个选项。

仅获取路径,需要剪切输出:

git ls-tree-r feature/newposts  | grep`date + '%Y-%m-%d'` | cut-c54-

现在可以正确打印:

_posts/2018-08-05-spring-boot-integration-intellij-idea.adoc

承诺

git log是用于获取特定路径的提交的命令。 它允许一个分支选项。

git log feature/newposts--$( git ls-tree -r feature/newposts  | grep`date + '%Y-%m-%d'` | cut-c54-)

输出:

commit dcc9dc60dc7ee615f35703c9a8e696d2dcae6d41
Author: Nicolas Fränkel < [email protected] >
Date:   Sun Apr 1 23:36:20 2018 +0200

    Add Spring Boot integration in IntelliJ IDEA post

      Fix #25

要将输出限制为提交值,请使用--format选项:

git log feature/newposts--format= %H --$( git ls-tree -r feature/newposts  | grep`date + '%Y-%m-%d'` | cut-c54-)

结果是:

dcc9dc60dc7ee615f35703c9a8e696d2dcae6d41

樱桃采摘

最后一步是挑选相关提交。 在这一点上,这是显而易见的:

git cherry-pick$( git log feature/newposts --format= %H --$( git ls-tree -r feature/newposts  | grep`date + '%Y-%m-%d'` | cut-c54-))

最后一点

我没有找到cherry-pick插入特定分支的方法,因此无法将提交添加到当前分支。

上面的命令只需要添加到master分支的结账,然后返回即可。

git checkout master&&\
git cherry-pick $( git log feature/newposts --format= %H --$( git ls-tree -r feature/newposts  | grep`date + '%Y-%m-%d'` | cut-c54-))&&\
git checkout -

正如我们在较早的文章中所看到的 ,如果上面的代码段是用bash脚本编写的,其名称以git-开头,并且位于PATH ,则可以通过git调用它:

git发布
#!/bin/bash
git checkout master &&\
git cherry-pick $( git log feature/newposts --format= %H --$( git ls-tree -r feature/newposts  | grep`date + '%Y-%m-%d'` | cut-c54-))&&\
git checkout -

此时,可以像下面这样调用脚本:

git publish

翻译自: https://blog.frankel.ch/cherry-pick-automation-bash/

自动安装bash

你可能感兴趣的:(自动安装bash_使用Bash进行自动选择)