Git 显示:在我常用的编辑器 Qt Creator 中查看文件

问题描述 投票:0回答:2
git show <revision>:<relative/path/to/file>

)打开。

或者,Qt Creator 有一些 Git 集成,但我在 Extras > Git 下看不到这种可能性。真的有吗?

Qt Creator 的

-block

选项为我提供了很多。如果我跑

qtcreator -block path/to/file.cpp

然后我在我的 Qt Creator 实例中打开文件,直到我在那里关闭它。但是,如果我将 
git show

的寻呼机设置为

qtcreator -block
那么当我运行
git show <file>
.
 时什么也不会发生
我还尝试了语法

qtcreator -block $1

来指定调用者预期有一个参数(这将是指定修订版的文件副本,由调用寻呼机的 Git 检索),但这仅此而已,所以仍然没什么。

    

git qt-creator git-show
2个回答
2
投票
GIT_PAGER

PAGER
环境变量可能是你想要的:
$ export GIT_PAGER='whatever'
$ git show ...

寻呼机应该从 stdin 读取,这意味着您可能需要创建一个小的包装脚本来执行此操作,然后将内容写入临时文件:

$ cat /path/to/my/script #!/bin/bash tmp=$(mktemp) # You might want to tinker with this variable to indicate the filetype cat - > "$tmp" qtcreator -block "$tmp" # change this line to your needs rm -- "$tmp"

然后在你的rc文件中指定
GIT_PAGER

export GIT_PAGER='/path/to/my/script'

然后运行
git show

寻呼机将被拾取。

$ git show ...

然而,这有一个巨大的缺点,那就是 
GIT_PAGER

环境变量将被

git log
git diff
等人拾取
这意味着您正确地希望将寻呼机指定为配置选项:

$ git config --global pager.show '/path/to/my/script'

正如配置名称所示,这会为“show”子命令设置寻呼机。

如果你不喜欢 bash,那么我相信用 Python、Perl、JavaScript 或其他语言重写它很容易。


1
投票

这是我执行此操作的小命令,输入您的

.gitconfig

showq = "!f() { tmp=$(echo $(git rev-parse $1) | cut -c1-7)_$(basename $2) ; git show $1:$2 > "$tmp" ; qtcreator -block "$tmp" ; rm "$tmp";}; f"

showq = "!f() { tmp=$(echo "$1")_$(basename $2) ; git show $1:$2 > "$tmp" ; qtcreator -block "$tmp" ; rm "$tmp";}; f"

说明:

假设我想输入:

git showq HEAD^^^^^ path/to/file.c

我们也可以

使用
    HEAD^^^^^
  • 解析
    git parse $1
    ,其中
    $1
    是传递给这个新函数
    showq
    的第一个参数。这将输出完整的哈希值,比如
    a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4
    。然后我们将其回显/管道化为
    cut
    以仅取前 7 个字符,这在哈希中很常见。这产生
    a1b2c3d
    
    

    像这样放双引号
  • $(echo "$1")

    
    
  • 然后我们放一个
_

.

然后对于文件名(参数

$2

),我们只取基本名称。

然后我们使用适当的参数运行原始的

git show

,并要求它输出到一个名为 constructed 的文件。

然后我们在该文件上调用 Qt Creator。 Qt Creator 向我们展示了我们目前正在寻找 

<7 char hash OR rev-syntax>_<basename>

例如在我们的例子中

a1b2c3d_file.c
HEAD^^^^^_file.c
。由于它具有相同的扩展名,因此它像往常一样被 Qt Creator 解析和着色。
然后我们删除它。

宾果!

© www.soinside.com 2019 - 2024. All rights reserved.