Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 格式化整个项目,保留git历史记录_Bash_Git_Formatting_Git Rewrite History - Fatal编程技术网

Bash 格式化整个项目,保留git历史记录

Bash 格式化整个项目,保留git历史记录,bash,git,formatting,git-rewrite-history,Bash,Git,Formatting,Git Rewrite History,我正试图将一个旧的、糟糕的设计和技术债务的庞然大物格式化成类似可读的东西,以便自动化并在将来检查它。这几天来我一直在讨论这个问题,我已经多次阅读了它的内容,以及对它的第一个评论。这让我走上了正确的道路,一个稍微修改过的命令版本似乎也能工作 git filter branch--tree filter'prettier--no config--ignore path/Users/samuraiseoul/.prettierignore--single quote--use tabs--print

我正试图将一个旧的、糟糕的设计和技术债务的庞然大物格式化成类似可读的东西,以便自动化并在将来检查它。这几天来我一直在讨论这个问题,我已经多次阅读了它的内容,以及对它的第一个评论。这让我走上了正确的道路,一个稍微修改过的命令版本似乎也能工作

git filter branch--tree filter'prettier--no config--ignore path/Users/samuraiseoul/.prettierignore--single quote--use tabs--print width=90--write“***.{js,php,scss,ts,md,css}”| | echo“错误格式化,可能是无效代码”--all

问题是,虽然它可以在一个较小的测试回购协议上运行,约有500次提交,但在主回购协议上运行30000次以上提交和100倍文件需要几周时间

因此,我一直在尝试每次提交仅获取更改的文件,并格式化这些文件。以下命令的输出似乎应该可以正常工作,但在小型repo上运行后,
git过滤器分支的更改似乎都无法保存。我不确定这里到底出了什么问题。它似乎与解决方案类似n,但它不起作用

git filter branch--tree filter'git show$git\u COMMIT--pretty=“”--name only--diff filter=AM | grep-e“\.scss$”--e“\.css$”--e“\.js$”--e“\.md$”--e“\.yml$”| tr tr“\”| tr n”“| xargs-t find 2>/dev/null | tr tr 124;| xargs-t prettier--无配置--单引号--使用制表符--打印宽度=90--写入| | echo“错误格式,无效语法”---全部

我不确定到底哪里出了问题。据我所知,我将命令传递到树过滤器中,应用于每次提交,然后重写提交历史以包含该命令的效果。它的输出显示它正在命中文件,而pretter正在处理这些文件。不幸的是,在命令运行之后,如果我对来自repo的同一个文件和repo的未修改版本进行了差异,则不会显示任何差异


我认为问题在于我编写的用于传递到的bash命令,但目前我不是100%确定。如果有任何帮助,我将不胜感激。如果有更多信息或其他命令,请告诉我!谢谢。

我将自己尝试这样做。我想
过滤器分支
ap这里列出的方法将是关键:@markerikson我必须研究一下,最终我没有让它工作,我们有点放弃了,尽管我真的希望看到它仍然工作,所以如果你有一些进展,请让我知道!