在使用 conda 环境时,pre-commit我收到错误:
error: Library stubs not installed for "requests" (or incompatible with Python 3.10)
Run Code Online (Sandbox Code Playgroud)
完整的错误消息是:
rc/export_data/plantuml_get_package.py:69: error: Library stubs not installed for "requests" (or incompatible with Python 3.10)
src/export_data/plantuml_get_package.py:69: note: Hint: "python3 -m pip install types-requests"
src/export_data/plantuml_get_package.py:69: note: (or run "mypy --install-types" to install all missing stub packages)
src/export_data/plantuml_get_package.py:69: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
Found 1 error in 1 file (checked 24 source files)
Run Code Online (Sandbox Code Playgroud)
错误消息中给出了默认的解决方案:
mypy --install-types
Run Code Online (Sandbox Code Playgroud)
然而,要求已经满足:
Installing missing stub packages:
/usr/bin/python3 -m pip install types-requests
Install? …Run Code Online (Sandbox Code Playgroud) 我们的软件基于Linux和Windows平台构建.根据开发人员的偏好,在任一平台上开发和测试贡献,然后将其提交到我们的subversion存储库.然后证明该贡献不是建立在另一个平台上,并且必须进行修复.另一个平台上的修复可能会再次破坏原始平台上的构建,依此类推.
在提交之前,我宁愿看到在另一个平台上构建(并进行回归测试)贡献.我们有一个连续构建服务器(CruiseControl),但该服务器是从存储库构建的.我正在寻找一个解决方案,其中连续构建服务器构建在另一个平台上作为预提交检查,然后在构建和测试成功时提交内容.
有什么建议?
build-automation continuous-integration cruisecontrol pre-commit
每当我提交时,我担心我可能会错过依赖关系,并且我正在寻找最简单的方法来隔离测试git树,以确保git索引(“暂存”)中的内容实际上可以编译/运行他们自己的。
我的代码依赖关系存在于我执行“ git add”的文件系统中,因此简单的编译和运行测试无法保证如果将树(或暂存区)检出到干净的文件系统上,则我签入的内容不会编译/运行。
我可以有一个连续的构建,可以在提交后进行检查,但是我不希望在以后不得不修补的历史记录中没有任何错误的提交。因此,我想要一种创建隔离环境的方法,该环境包括树的检出以及索引/临时区域。
我考虑过的一件事是两次使用git stash,即:
(这些未跟踪的文件可能有用,但不一定要我检查到存储库中的内容-例如eclipse项目)。
不过,我有一种过度设计一个简单问题的感觉。
是否有可能有一个小的shell脚本来替换$EDTIORfor git和svn?
因此,当一个不熟悉vi或emacs的人进行提交并忘记添加
-m "fixed the foo bug"
参数时,它不会打开编辑器,他们不知道如何退出,而是只会提示
请证明这个提交包含的内容是一句话:
并且用户只是写了一个小句子,点击进入,然后关闭它.
帮我做一些伤害!我已经厌倦了只有六个谷歌的点击,告诉我永远不要这样做.让我们把事情搞得一团糟!我很确定我可以获得db/transactions中的实际文件,那么我怎么能以有趣的方式搞砸这些呢?我看过SVN :: Delta,但是我甚至无法弄清楚它应该做什么(让某些人对存储库做出改变的漂亮图表?将编码消息发送给CIA?).
我真的不在乎听到更多的原因,为什么不这样做.我在40或50个使用颠覆的人的环境中工作.虽然我们正在编码,但我们需要在web.config文件中使用一些密码,在DataSource.groovy文件中,您可以命名.只是拒绝提交,因为我们离开他们就像地狱一样烦人.我们必须保存手动删除密码的文件(我们必须打开这些文件,它们不一定是开放的),然后一旦我们完成提交,我们必须将它们放回去继续工作?这是一个好主意,我想如果你只是想在每次犯下他们的时候讨厌人们,直到他们发展出一个从不犯下任何东西的巴甫洛夫反射.为什么?因为计算机不应该自动执行任务?因为软件客户端不知道预提交挂钩实际上没有将版本保存在开发人员的机器上?
我在这里与语言无关.给我看一个如何做你不应该做的事情的例子......我从预提交中编辑哪个文件?如何在DELTA ### line之后解释gobbledygook?是否有任何图书馆可以帮助解决这个问题?让我们玩得开心!
PS说真的,没有人创造过"坏主意"标签?WTF.
我已经应用了一些静态代码分析 - 并将所有Java包级别字段转换为protected.这大多是正确的,因为我忘了明确设置访问修饰符,并且受保护通常是我在那些情况下所追求的.
不幸的是,我应用的重构是IntelliJ弱化访问修饰符,它也改变了很多public - > protected,on constructors等等.
所以,一旦我有一个带有这样的语句的差异:
-int myField;
+protected int myField;
Run Code Online (Sandbox Code Playgroud)
和
-public MyConstructor()
+protected MyConstructor()
Run Code Online (Sandbox Code Playgroud)
有没有办法编写一个在提交期间运行的脚本,并且只允许上面的第一个例子,但没有第二个?我可以搞清楚脚本,我只是不确定如何运行它 - 它是一个预提交钩子吗?
如果它是一个预提交钩子,你怎么检查这样一个脚本中的diff并接受/拒绝它基于greped它的某些字符串?
我试图强制执行git commit消息策略,以使我的存储库保持整洁。我看过有关服务器端和客户端挂钩的官方文档,然后碰到了husky。
到目前为止,我可以与第一个一起工作,但无法设置沙哑,我还有很多东西要学习。主要思想是能够在新的工作站上工作而不必手动设置任何客户端挂钩。
有人可以解释我如何设置哈士奇检查我的提交消息,甚至举个例子吗?
这是project-root/githooks文件夹中的commit-msg钩子:
#!/usr/bin/env ruby
message_file = ARGV[0]
message = File.read(message_file)
$regex = /([resolved|fixed]) #([0-9])* ([A-Z])\w+/
if !$regex.match(message)
puts "[POLICY] Your message is not formatted correctly!"
puts "Message format must be like:"
puts "resolved #123 Case title (for features)"
puts "fixed #123 Case title (for bugs)"
puts "First letter of 'Case title' must be capitalized!"
exit 1
end
Run Code Online (Sandbox Code Playgroud)
我试图将脚本添加到package.json中:
"scripts": {
... : ...,
"commitmsg": "sh hooks/commit-msg",
... : ...
}
Run Code Online (Sandbox Code Playgroud)
挂钩不起作用。所有消息均通过。如果放在.git / hooks中,它将正常工作。 …
我的哈士奇脚本:
"husky": {
"hooks": {
"pre-commit": "sh ./tools/githooks/pre-commit.sh"
}
}
Run Code Online (Sandbox Code Playgroud)
假设我正在做一个git commit -m "I want that text". 如何在 shell 脚本中访问我的提交消息?我试图在 shell 脚本中回显 $HUSKY_GIT_PARAMS 和 $HUSKY_GIT_STDIN 但没有成功
我想为团队添加以下内容以进行预提交:
- repo: https://github.com/pre-commit/mirrors-mypy
rev: 'v0.720'
hooks:
- id: mypy
args: [--ignore-missing-imports]
Run Code Online (Sandbox Code Playgroud)
我的团队担心这可能太严格了。为了逐步介绍,我希望这个钩子不会使提交失败,而只是为了显示问题。那可能吗?
预提交挂钩在单独的虚拟环境(或 Docker 容器)中运行。然而,我们的代码在 Docker 上运行,我们也在使用 Docker 进行开发。
到现在为止,我们没有对我们的主机系统上安装任何相关性,但在运行的时候mypy,isort和pylint他们遇到的问题,因为他们不能访问安装的依赖关系。
我们的第一个想法是在主机系统的虚拟环境中安装依赖项,但这似乎也是一个笨拙的解决方法。
有没有一种很好的方法来运行具有对容器的完全访问权限的预提交?