小编use*_*270的帖子

要添加到"git status --porcelain"以使其表现得像"git status"?

之前的一个问题产生了一些关于如何检查你的Git repo是否包含脏索引或未跟踪文件的想法.我从讨论中得出的答案如下:

#!/bin/sh
exit $(git status --porcelain | wc -l)
Run Code Online (Sandbox Code Playgroud)

这个答案背后的想法是模仿程序员会做什么:运行git status然后检查输出.

不幸的是git status --porcelain,git status并没有完全相同的事情.特别是,git status将报告未按下的更改,而git status --porcelain不会.这是一个例子

[jarmo@localhost math-hl]$ git status --porcelain
[jarmo@localhost math-hl]$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我需要添加到原始脚本中以确定何时repo已经未按下更改?特别是,这是一种正确的方法吗?

#!/bin/bash
if [ $(git status --porcelain | wc -l) != …
Run Code Online (Sandbox Code Playgroud)

git

6
推荐指数
1
解决办法
3137
查看次数

约束多态:变量与函数参数

这是一个非常基本的问题.我刚开始使用几种不同的来源研究Haskell.我目前无法解读这些内容.

以下自然会很好地检查.

g :: Num a => a -> a
g x = x + 2
h = g (1.0 :: Double)
Run Code Online (Sandbox Code Playgroud)

当我将其解释如下时,这个约束多态的例子对我来说是完全合理的:只要提供的参数g是具有Num实例的类型,一切都可以.

所以,请考虑以下内容.

x :: Num a => a
Run Code Online (Sandbox Code Playgroud)

如果我将其解释如上,我得到:x可以获取具有Num实例的类型的任何值.但是,以下不会进行类型检查.

x :: Num a => a
x = (1.0 :: Double)
Run Code Online (Sandbox Code Playgroud)

我的问题是:是什么确切的区别就在这里?

有点得到可能发生的事情:在第二个例子中,x定义为它将评估为任何Num,并且 (1.0 :: Double)不符合条件.

但我模糊的想法远非完整的解释,我正在寻找一个更好的解释.

haskell

2
推荐指数
1
解决办法
73
查看次数

标签 统计

git ×1

haskell ×1