git别名使用$((LINES / 2))

时间:2014-07-03 06:29:19

标签: git alias

我已经尝试了大约30种变体,包括sh -c版本,双引号和单引号,嵌套引号等。我缺少什么?

shortlog = "!git log -n $((LINES / 2))"

2 个答案:

答案 0 :(得分:1)

如果定义一个函数怎么办?

function shortlog { tmp=$(($LINES / 2)); git log -n "$tmp"; }

然后导出它:

export -f shortlog

你应该把它放在你的.bashrc我想如果你想在每次启动终端时使用它(但你可以先在一个孤立的终端上尝试它)。


修改

这有帮助吗?

git config alias.shortlog '!f() { tmp=$(($LINES / 2)); git log -n "$tmp"; }; f'

答案 1 :(得分:0)

我不会我最终如何使用它,但它实际上是唯一可以工作的东西,我希望这是过度。我从~/.gitconfig和我的~/scripts文件夹中移除了与较短日志别名相关的所有内容 - 这是我$PATH中的文件 - 我创建了名为git-las的文件(列表)所有简短的),每个代码都是这样的:

#!/bin/bash

$height=$(tput lines)
$height=$((height / 3))
git la -$height

我制作了每个可执行文件。 Git会在我的路径上找git las并找到git-las(没有扩展名),如果是可执行文件,并执行它,它就可以运行。 git la(列出所有内容)位于我的~/.gitconfig中,只是典型的git log --all --oneline --graph --decorate,每个人都有自己的名字。这是唯一的之类的东西,在我可以找到的每一点在线信息上轻松100个变化之后。即使尝试将tput内容移回~/.gitconfig也会失败,$LINES也会在这些工作文件中失败;它总是0。

真是一场战斗,但是现在我有了短日志(一些不同的大小和设置),可以随窗口动态缩放,总是给我大约1/2到1/4的在线日志输出 - 除以3(和6为1/4)在合并提交和棘手的分支路径周围占了一些额外的空间。我已经有一年的硬编码,但现在我开始正确版本并在机器之间共享我的dotfiles,所以我希望它对我所有不同的显示器高度都是动态的,所以它可以在无论我有多大的窗户,都是一种期待的时尚。