SVNステータスに従ってファイル名を色付けします
質問
呼び出すとき ls
, 、サブバージョンステータスに応じて、異なる色のファイル名を持ちたいと思います。たとえば、追加されたファイルはCyan、修正されたファイルが赤などです。バッシュの裸の力で可能ですか?この点に関して何か準備ができていますか?
解決
私の知る限り、純粋なバッシュ(脇にスクリプト)でそれを達成することは不可能です。
スクリプト(bash、python、perl、毒物)を使用して、色付きファイルリストを簡単に取得できます。これは、Pythonで書かれたかなり粗雑な概念実装の実装です。 https://gist.github.com/776093
#!/usr/bin/env python
import re
from subprocess import Popen, PIPE
colormap = {
"M" : "31", # red
"?" : "37;41", # grey
"A" : "32", # green
"X" : "33", # yellow
"C" : "30;41", # black on red
"-" : "31", # red
"D" : "31;1", # bold red
"+" : "32", # green
}
re_svnout = re.compile(r'(.)\s+(.+)$')
file_status = {}
def colorise(line, key):
if key in colormap.keys():
return "\001\033[%sm%s\033[m\002" % (colormap[key], line)
else:
return line
def get_svn_status():
cmd = "svn status"
output = Popen(cmd, shell=True, stdout=PIPE)
for line in output.stdout:
match = re_svnout.match(line)
if match:
status, f = match.group(1), match.group(2)
# if sub directory has changes, mark it as modified
if "/" in f:
f = f.split("/")[0]
status = "M"
file_status[f] = status
if __name__ == "__main__":
get_svn_status()
for L in Popen("ls", shell=True, stdout=PIPE).stdout:
line = L.strip()
status = file_status.get(line, False)
print colorise(line, status)
他のヒント
これが要点です SVN出力を色付けするための小さなスクリプトの第3世代で。それは完璧に機能します svn status
コマンド。追加しました alias svns="/path/to/svn-color.py status"
わたしの .bash_profile
そして今、私は入力できます svns
色分けされた出力をご覧ください。著者は作ることをお勧めします svn
彼のスクリプトにデフォルト。
所属していません StackOverflow