【问题标题】:C++: clang-format with gitC++:带有 git 的 clang 格式
【发布时间】:2019-06-22 07:43:30
【问题描述】:

今天我尝试在新分支中提交时,我通常从事的项目给了我以下错误:

Traceback (most recent call last):
  File ".git/hooks/pre-commit", line 86, in <module>
    clang_format(f)
  File ".git/hooks/pre-commit", line 41, in clang_format
    action = raw_input('{} does not conform to clang-format rules. '
NameError: name 'raw_input' is not defined

知道如何解决这个问题吗?至少让我的代码提交。谢谢!

【问题讨论】:

  • 这是一个 Python 错误。没有特定于 C++ 或 git 的内容。
  • 如何让我的代码(在 c++ 项目中)提交?
  • 好吧。我建议您问问自己,您最近是否在系统上安装了 Python 2 以换用 Python 3。这可以解释 Python 错误。
  • 我的系统中根本没有使用 Python 2 ...
  • 确实有人这样做了。 raw_input 是 Python 2,在 Python 3 中简单地重命名为 input。事情不会像那样随机中断,有人改变了钩子或你的系统。你需要弄清楚它是什么,我们不能为你做这件事。

标签: c++ git clang-format


【解决方案1】:

在尝试了解系统上发生的情况之前,您可以暂时禁用预提交挂钩以保护您的更改。

使用--no-verify 标志提交或禁用钩子,如果您需要进行多次提交。

绕过提交的钩子

git commit --no-verify

绕过所有提交的钩子

在你的 git 项目的根目录下,做:

chmod -x .git/hooks/pre-commit

这会禁用调用令人烦恼的 python 脚本的钩子,并让您无需任何检查即可提交您想要的任何内容。但请注意,不会执行任何检查

【讨论】:

    【解决方案2】:

    正如 cmets 中的几个人所提到的,很明显,这里发生的是 Python-2.x 脚本正在由 Python-3.x 解释器解释。

    安装了两种 Python 风格的系统有时会使用名称 python2 来调用 Python 2.x 解释器,并使用 python3 来调用 Python 3.y 解释器。 (这里xy 的值可能会有所不同,尽管现在没有人应该使用早于Python 2.7 的任何东西,以及it's a good idea to move to Python 3 soon。)

    将 Python 2 脚本转换为 Python 3 通常很容易,但如果您同时安装了两个解释器,并且您的脚本本身只是如下所示:

    #! /usr/bin/env python
    ... script ...
    

    让它使用 Python 2 的最快方法,如果它仍然在您的系统上,名称为 python2,则将第一行更改为:

    #! /usr/bin/env python2
    

    第一行可能有所不同,但总体思路是#! 后跟解释器的完整路径名,然后是该解释器的任何参数。使用/usr/bin/env 作为解释器允许进一步的路径搜索,以便您可以让它找到pythonpython2python3python3.6python3.7 等,视情况而定。

    作为YSC answered,在 Git 方面,您可以跳过整个预提交脚本。

    【讨论】:

      猜你喜欢
      • 2020-07-11
      • 1970-01-01
      • 2013-09-23
      • 2020-07-09
      • 2020-12-17
      • 1970-01-01
      • 2021-07-31
      • 2021-04-17
      • 2019-05-29
      相关资源
      最近更新 更多