Ну, «невозможно» означает, что нет простого пути, и мне придется сделать это самому.Я слишком беспокоился о том, что всегда усложняю, когда есть более легкий путь.
Вот скрипт bash + php.Я попытался сделать это с помощью sed, но мне это не удалось.
Я назвал этот скрипт git-gd и поместил его в каталог bin, который находится по пути /usr/local/bin/
, и использую его с git: git gd
или git gd <options>
#!/bin/bash
GIT="/usr/local/bin/git"
PHP="/bin/php"
GIT_DATES="$GIT log --date=short --abbrev-commit --pretty=format:%C(yellow)%h_%C(green)[%ad]%Creset --branches --color=always $*"
#if you have have alias g
GIT_GRAPH="$GIT g --color=always"
#or
#GIT_GRAPH="$GIT log --decorate --graph --oneline --date-order --color=always"
PHP_SCRIPT='
$exps = explode("\n", $_SERVER["argv"][1]);
$lines = file("php://stdin");
$s = array();
$r=$s;
foreach($exps as $exp){
$exp = trim($exp);
list($commit,)=explode("_", $exp);
$s[] = $commit;
$r[] = str_replace("_", " ", $exp);
}
foreach($lines as $line){
$line = str_replace($s, $r, $line);
echo $line ;
}
'
DATES=`$GIT_DATES`
$GIT_GRAPH $* |$PHP -r "$PHP_SCRIPT" -- "$DATES"
Я немного подожду более простого решения и приму свой ответ