繁体   English   中英

将命令结果附加到git log漂亮格式

[英]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修订版。 我已经找到了如何获取提交的SVN版本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>

任何想法?

这很慢,但是可以根据需要工作:

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"

现在,我已经创建了一个Powershell别名( source )来获取一条消息(用于复制/粘贴到bugtracker消息中),但是它很长而且很复杂,而且没有太多内容:

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM