将命令结果附加到 git 日志漂亮格式
Append command result to git log pretty format
我有一堆使用漂亮格式的漂亮 git log
别名,例如:
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
这给了我这个:
* cb847da - (HEAD -> master, origin/trunk) foo (4 hours ago) <thomasb>
* 2117663 - bar (8 hours ago) <thomasb>
我实际上使用的是 git-svn,我有一个不同的命令来列出 SVN 修订版:
slg = svn log --oneline --show-commit
我想在我的 git lg
输出中插入 SVN 修订版。我找到了 how to get the SVN revision of a commit (git svn find-rev $(git log --max-count 1 --pretty=format:%H)
),但是我找不到如何在漂亮的格式中插入命令结果,所以我会得到这样的东西,例如:
* cb847da - r1234 - (HEAD -> master, origin/trunk) foo (4 hours ago) <thomasb>
* 2117663 - r1233 - bar (8 hours ago) <thomasb>
有什么想法吗?
现在我已经创建了一个 Powershell 别名 (source) 来获取消息(发送到 bugtracker 消息中的 copy/paste)但是它很长而且很复杂:
function Get-GitSvnMessage (
$rev
) {
if ($rev -eq $null -or $rev -eq "") {
$rev = "HEAD"
}
# get svn revision
$svn = (git svn find-rev $rev)
# get git message
$msg = (git show -s --format=%B $rev | ? { $_ -notmatch "^git-svn-id:" -and $_.Trim() -ne "" })
# get changed files
$files = (git diff-tree --no-commit-id --name-status -r $rev)
Write-Output "SVN revision $svn"
Write-Output $msg
Write-Output ""
Write-Output $files
}
这很慢,但如您所愿:
git config alias.lgs '!git log --graph --pretty=format:'\''%Cred%h%Creset - %C(bold red)-%H-%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit | while IFS=- read -r prefix color revision rest; do echo "$prefix-$color$(git svn find-rev "$revision")$rest"; done'
如果您更喜欢直接编辑配置文件:
lgs = "!git log --graph --pretty=format:'%Cred%h%Creset - %C(bold red)-%H-%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit | while IFS=- read -rprefix color revision rest; do echo \"$prefix-$color$(git svn find-rev \"$revision\")$rest\"; done"
我有一堆使用漂亮格式的漂亮 git log
别名,例如:
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
这给了我这个:
* cb847da - (HEAD -> master, origin/trunk) foo (4 hours ago) <thomasb>
* 2117663 - bar (8 hours ago) <thomasb>
我实际上使用的是 git-svn,我有一个不同的命令来列出 SVN 修订版:
slg = svn log --oneline --show-commit
我想在我的 git lg
输出中插入 SVN 修订版。我找到了 how to get the SVN revision of a commit (git svn find-rev $(git log --max-count 1 --pretty=format:%H)
),但是我找不到如何在漂亮的格式中插入命令结果,所以我会得到这样的东西,例如:
* cb847da - r1234 - (HEAD -> master, origin/trunk) foo (4 hours ago) <thomasb>
* 2117663 - r1233 - bar (8 hours ago) <thomasb>
有什么想法吗?
现在我已经创建了一个 Powershell 别名 (source) 来获取消息(发送到 bugtracker 消息中的 copy/paste)但是它很长而且很复杂:
function Get-GitSvnMessage (
$rev
) {
if ($rev -eq $null -or $rev -eq "") {
$rev = "HEAD"
}
# get svn revision
$svn = (git svn find-rev $rev)
# get git message
$msg = (git show -s --format=%B $rev | ? { $_ -notmatch "^git-svn-id:" -and $_.Trim() -ne "" })
# get changed files
$files = (git diff-tree --no-commit-id --name-status -r $rev)
Write-Output "SVN revision $svn"
Write-Output $msg
Write-Output ""
Write-Output $files
}
这很慢,但如您所愿:
git config alias.lgs '!git log --graph --pretty=format:'\''%Cred%h%Creset - %C(bold red)-%H-%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit | while IFS=- read -r prefix color revision rest; do echo "$prefix-$color$(git svn find-rev "$revision")$rest"; done'
如果您更喜欢直接编辑配置文件:
lgs = "!git log --graph --pretty=format:'%Cred%h%Creset - %C(bold red)-%H-%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit | while IFS=- read -rprefix color revision rest; do echo \"$prefix-$color$(git svn find-rev \"$revision\")$rest\"; done"