2012-04-02 43 views
1

我想在Git回购时使用自定义CSH提示。 我想提示的样子,如果我在一个混帐回购协议是不自定义CSH提示Git回购

host_name>$ 

但是,当我是个混帐回购协议中必须变成这样的事情

host_name [GIT REPO ROOT DIR]>$ 

我只是想显示Git repo的根目录(GIT REPO ROOT DIR),以便我知道我目前在哪个回购站中,而不是每次都使用“pwd”。

你们有什么建议吗?感谢您的帮助

-Anish

+1

您使用的是csh还是tcsh? – 2012-04-02 08:45:32

+0

我正在使用csh。 – ASK87 2012-04-02 13:58:17

+0

csh(取决于版本)不提供任何直接方式来自定义提示。您可以为更新'$ prompt'的'cd','pushd'和'popd'命令定义别名。你在什么操作系统上?在许多系统上,'/ bin/csh'实际上是'/ bin/tcsh'的符号链接。变量$ tcsh和$ version是否被设置? – 2012-04-02 17:21:06

回答

0

我仍然是一个死忠的tcsh用户,但我终于放弃了对原材料和CSH切换到TCSH的原因有很多,其中包括CSH对这样的事情可怕的支持。 (我可能最终让步,切换到bash的,甚至:-))。不过,这是可以做到的,因为@KeithThompson指出,通过别名:这里

alias cd 'chdir \!:* && update_prompt' 
alias update_prompt 'set prompt="...stuff here... "' 

其中” ...的东西... “可以包括使用反引号来运行某些内容,例如生成[GIT REPO ROOT DIR]部分的脚本。 (写在不用csh一些脚本!)

注,而我别名cdchdir ...你可以使用命令本身的别名,你将需要pushdpopd

+0

谢谢@Keith Thompson和@torek。我以前只是这样做,它的工作方式是我想要的。我想知道是否还有其他方式。但可悲的是'git'命令对于一个非常大的回购可能会变得缓慢。我正在考虑使用'git' cmd找到我的回购商店名称。我打算编写一个脚本来解析我的'pwd'并获取回购名称,因为我有一个特定的目录结构。 – ASK87 2012-04-03 04:34:13

4

以下是我对tcsh所做的工作。把这个脚本放在你的路径上。叫它CGB:

#!/bin/bash 
git branch 2> /dev/null | grep '^*' | awk '{ print $2; }' 

在你的.tcshrc文件,

alias precmd 'set cgb=`cgb`' 
set prompt='...your-prompt-string... (%$cgb) % ' 

PRECMD每次提示之前运行。如果您只希望它在更改目录之前运行,请改用别名cwdcmd。例如,我更喜欢precmd,因为它会在执行git checkout时运行。

+2

根据http://stackoverflow.com/questions/1593051/how-to-programmatically-determine-the-current-checked-out-git-branch,我不应该在脚本中使用“git分支”,因为它是瓷器指挥。替换为:“git rev-parse --symbolic-full-name --abbrev-ref HEAD 2>/dev/null”为上面的“git branch ...”。 – 2012-10-30 21:46:04