我正在编写一个脚本来循环遍历某个文件夹及其子文件夹中的所有Git存储库并执行git log
。脚本的输出最终被保存到CSV日志文件中。
现在,我想在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'
关于如何执行此操作的任何想法?
我认为您在执行任务时使用了错误的工具。当前目录是环境的属性,而不是存储库的属性;git log
不太在乎。
因此,您应该在脚本中获取当前目录,并以某种方式将其放入的输出中git log
。
如果需要在返回的每一行上都有repo目录,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
如果需要,您也可以尝试在命令中引用它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句