我正在寻找包含以下内容的列表:
- 日期
- 分支名称
对于名称中带有"发布"的"开发"的所有分支。
似
2014-03-11 10:52:04 +0100 9 months ago release-1.0
2014-03-28 10:33:23 +0100 8 months ago release-2.0
2014-04-02 10:40:59 +0200 8 months ago release-3.0
2014-04-18 17:01:54 +0200 8 months ago release-3.0.1
2014-05-05 15:25:31 +0200 7 months ago release-3.0.2
我找到了几个真正帮助我的答案,现在我绊倒了语法。有用的信息是:
- 寻找尾巴
- 按日期显示活动的 git 分支(请注意,我正在寻找创建分支的提交)
- 在另一篇文章中发表此评论
到目前为止,我将以下内容作为 bash 的别名
for k in `git branch|sed s/^..//`;
do echo -e `git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset"
<(`diff -u <(git rev-list --first-parent "$k") <(git rev-list --first-parent develop)|sed -ne '"'"'s/^ //p'"'"'|head -1`)
--`\t"$k";
done|sort;'
单独运行其中的每个部分都可以工作。但不完全是。
所以这些工作:
-
git branch|sed s/^..//
-
git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset" release-3.0
-
diff -u <(git rev-list --first-parent release-3.0) <(git rev-list --first-parent develop)
但当我把它们放在一起时就不行了。
帮助?
不能像这样嵌套反引号命令:
echo `echo foo `echo bar` baz`
要嵌套,您需要使用(更可取的)$()
语法。
你也不需要在 <( ...
)
除非您希望替换运行 ...
命令的输出,而不是 ...
命令本身。
所以尝试更多类似的东西:
for k in $(git branch|sed s/^..//);
do echo -e $(git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset"
<(`diff -u <(git rev-list --first-parent "$k") <(git rev-list --first-parent develop)|sed -ne '"'"'s/^ //p'"'"'|head -1`)
--)\t"$k";
done|sort;'
或者没有<()
反引号
for k in $(git branch|sed s/^..//);
do echo -e $(git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset"
<(diff -u <(git rev-list --first-parent "$k") <(git rev-list --first-parent develop)|sed -ne '"'"'s/^ //p'"'"'|head -1)
--)\t"$k";
done|sort;'
此外,我认为您根本不需要在这里使用echo -e
,因为您可能可以直接将t$k
放在git log
格式字符串中。
for k in $(git branch|sed s/^..//); do
git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset"$'t'"$k"
<(diff -u <(git rev-list --first-parent "$k") <(git rev-list --first-parent develop)|sed -ne '"'"'s/^ //p'"'"'|head -1)
--;
done|sort;'
假设我做对了,看起来它正在尝试git log
修订版中输入以从标准输入进行记录,但我认为git log
不会以这种方式进行输入。所以你需要把它作为一个论点。
for k in $(git branch|sed s/^..//); do
git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset"$'t'"$k"
"$(diff -u <(git rev-list --first-parent "$k") <(git rev-list --first-parent develop)|sed -ne '"'"'s/^ //p'"'"'|head -1)"
--;
done|sort;'
你可能也可以摆脱那个悬而未决的--
。