相关疑难解决方法(0)

Git责备:统计数据

我如何"滥用"指责(或者一些更适合的函数,和/或与shell命令结合使用)来统计存在来自每个提交者的存储库中当前有多少行(代码)?

示例输出:

Committer 1: 8046 Lines
Committer 2: 4378 Lines
Run Code Online (Sandbox Code Playgroud)

git

191
推荐指数
6
解决办法
5万
查看次数

如何在git存储库中处理广泛的代码格式更改

我们有一个包含大约500,000行代码的项目,使用git进行管理,其中大部分已经使用了几年.我们即将进行一系列修改,以使旧代码符合开发人员社区的当前标准和最佳实践,包括命名约定,异常处理,缩进等.

你可以把它想象成漂亮的印刷和低级/机械重构之间的东西.

这个过程很可能触及代码库中的几乎所有代码行(~85%),并且一些行将受到多达五次修改.所有更改都旨在在语义上保持中立.

  • 是否有任何方法可以使更改对git blame等透明,这样当从一个月后查看代码时,我们会看到引入逻辑的提交,而不是更改缩进或大小写的提交?
  • 从没有经历过这个过程的叉子中拉出合并的最佳方法是什么?我现在的计划是让一个脚本克隆分叉的repo,将自动化过程应用于它及其基础,对它们进行区分,然后应用diff.但我希望得到更清晰的答案.
  • 还有其他我没有看到的问题,如果有的话可以做些什么来减轻它们?我认为git bisect等应该没问题,git log等等.除非你小心谨慎,否则git diff会很烦人,但是我不相信我不会忽视另一个痛点.

  • git refactoring pretty-print indentation

    44
    推荐指数
    3
    解决办法
    6883
    查看次数

    Git提交不会覆盖git blame中的原始作者

    我使用perl脚本修改php git存储库中的所有制表符并将它们全部更改为4个空格.

    $ find -iname \*.php -exec perl -pi -e "s/\t/    /g" {} \
    
    Run Code Online (Sandbox Code Playgroud)

    我可以提交这个更改git commit,但它会在我提交之后将我标记为内部所有更改行的作者git blame.

    有没有办法实现这个大规模的改变,不会让我成为改变行的作者,但保留原作者?这是我们在项目中并不想丢失的很多历史.

    我们用4个空格替换制表符的目的不是为了使git责备中的东西看起来不同,而是遵循适当的PEAR编码标准.例如没有标签,使用4个空格进行缩进.

    git git-commit git-blame

    24
    推荐指数
    2
    解决办法
    4840
    查看次数

    如何在不修改 git 历史记录的情况下在我的源代码上运行代码格式化程序?

    我正在尝试使用代码格式化工具格式化整个 repo。这样做时,我想保留有关谁提交了哪一行的信息,以便像这样的命令git blame仍然显示正确的信息。我的意思是它应该显示之前编辑过每一行的作者(在格式化之前)。

    有 git filter-branch 命令,它允许您从时间开始对 repo 的每个修订版运行命令。

    git filter-branch --tree-filter '\
      npx prettier --write "src/main/web/app/**/**.{js, jsx}" || \
      echo "Error: no JS files found or invalid syntax"' \
      -- --all
    
    Run Code Online (Sandbox Code Playgroud)

    运行它需要很长时间,而且我真的不在乎过去。我只想在不更改每一行的所有权的情况下格式化 master 分支。我怎样才能做到这一点?我尝试使用rev-list最后的和其他过滤器类型,但它仍然不起作用。必须有一种方法来格式化代码库,同时保留每一行的作者信息。

    git formatting git-filter-branch prettier

    19
    推荐指数
    3
    解决办法
    6412
    查看次数