2017-01-13 9 views
0

特定のフォルダ内のすべてのGitリポジトリとそのサブフォルダをループし、git logを実行するスクリプトを作成しています。 スクリプトの出力は、最終的にCSVログファイルに保存されます。現在のフォルダ名をGitログに含めるには

現在、git-logの結果に現在のフォルダ名を含めたいと思いますが、これを行う方法はgit-logのドキュメントでは見つかりません。

私の現在のgit-logコマンドは次のようになります。これを行う方法について

git log --branches=master --no-merges --pretty=format:"%H;%an;%ad;%s" --date=format:'%Y-%m-%d %H:%M' 

任意のアイデアを?

+0

多分質問を誤解が、なぜあなたが使用しているスクリプト言語を使用してフォルダ名を印刷していけませんか? – jbu

+0

私が見る限り、フォーマット文字列にはrepo name/folder nameを持つプレースホルダはありません。 – jbu

+0

'git log foldername/filename'これはあなたが望むものですか? – ASR

答えて

0

あなたは間違ったツールを使って作業していると思います。現在のディレクトリはリポジトリではなく環境のプロパティです。 git logはあまり気にしません。

したがって、スクリプト内の現在のディレクトリを取得し、何とかgit logの出力に入れる必要があります。

あなたはgit logによって返された各行のレポディレクトリを持っている必要がある場合、あなたは単にフォーマット文字列内$(pwd)を絞ることができます。

git log --branches=master --no-merges --pretty=format:"%H;%an;%ad;%s;$(pwd)" --date=format:'%Y-%m-%d %H:%M' 

は、電流経路が%が含まれている場合、それは望ましくない結果を生むことに注意してgit logによって解釈される特殊文字であるためです。これはあなたが形式にパスを挿入する前に%文字をエスケープするsedを使用することができ起こる避けるため

dir=$(pwd | sed s/%/%%/g) 
git log --branches=master --no-merges --pretty=format:"%H;%an;%ad;%s;$dir" --date=format:'%Y-%m-%d %H:%M' 

電流経路が"または;が含まれている場合、彼らは特別な文字であるとして、それはまだ問題を生成することができますシェルとCSV形式の両方で使用できます。必要であれば、sedコマンドで引用符で囲むこともできます。私は私が正しく理解していますが、--dirstatを検索する場合、絶対にわからない

0

:?

これはコミットメッセージの下部にそれぞれ変更されたディレクトリの変更の割合を追加します。 manページから:

--dirstat[=<param1,param2,...>] 
     Output the distribution of relative amount of changes for each sub-directory. The behavior of --dirstat can be customized by 
     passing it a comma separated list of parameters. The defaults are controlled by the diff.dirstat configuration variable (see git- 
     config(1)). The following parameters are available: 
関連する問題