と新年あけましておめでとうございます。クリスマスディナーから回復するのは難しい問題です。ここでSVN:awk(bash)のコマンドラインsvnで色を追加
はバッシュコード(私はの.bashrcファイルにそれを置く)を作品ウィッヒの一部です:
function svn {
command svn "[email protected]" | awk '
BEGIN {
cpt_c=0;
}
{
if ($1=="C") {
cpt_c=cpt_c+1;
print "\033[31m" $0 "\033[00m"; # Conflicts are displayed in red
}
else if ($1=="A") {
print "\033[32m" $0 "\033[00m"; # Add in green
}
else if ($1=="?") {
print "\033[36m" $0 "\033[00m"; # New in cyan
}
else if ($1=="D") {
print "\033[35m" $0 "\033[00m"; # Delete in magenta
}
else {
print $0; # No color, just print the line
}
}
END {
print cpt_c, " conflicts are found.";
}';
}
コードのこの部分で私が欲しい正確に何をすべきか。 svn関数(ステータス、更新など)は色で表示されます。内部的には、colorsvnやsvn-colorのようなものはインストールしたくありません。ここで
は、上記のコードの例です:(画像を投稿するenought評判を持っていない)、再びそして、私はを望むものは完全であるを。問題は、競合が見つかった場合(たとえば、私が更新を行うときなど)に起こります。実際にファイルが競合すると、svnがユーザーに手渡され、少数の文字を入力させます(下記参照)
# svn update
Conflict discovered in 'test.txt'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
ユーザタイプの何かをできるようにawkにする方法はあり、(その後、&がを終了し、保存、タイプEの後にいくつかの行を削除するインスタンスの)何かを、(例えばeのは、Vimの競合ファイルで開いWICH)別の文字を入力して衝突の解決を確認し、最後にsvn update(他のファイルなど)の次のステップを表示しますか?
つまり、ユーザーがsvnとやり取りできるようにするために色を表示するスクリプトを「一時停止」してから、svn updateを実行します。将来的にawkが呼び出し元のスクリプトを一時停止させてから再開させる方法を知っておくと、非常に便利だと思います!
私は自分自身を十分に分かりましたか?私の英語は私の望むほど良くはありません:/
詳細が必要な場合はお気軽にお問い合わせください!
あなたの 'コマンドsvn'は依然としてあなたの入力を受け取ります。自律型と対話型の実行を切り替えるための 'expect'のようなツールがありますが、ここでのポイントのほんの一部になるかもしれません。正しい解決策は低レベルのラッパーです。あなたが使用したくないと言ったようなものでしょう。あなたのawkスクリプトは入力されたfrimをパイプで受け取りますが、 '/ dev/tty'などの追加入力を読み込むモードを追加するために何かをハックする可能性があります。 – tripleee
bash関数 'svn'をこれをすべて扱うように拡張したいのですか、' svn'関数の実行後に別のコードとして必要な '一時停止'を想定していますか?ちなみにあなたの英語は大丈夫です!がんばろう。 – shellter
@shellter:さて、私はbash関数を拡張したいと思っています。それは最高です。しかし、私はすべての可能な解決策について開いています;) Ty for my english! –