Git中的“瓷器”是什么意思?

Git文档中偶尔会出现“瓷器”这个词。 这是什么意思?

“瓷器”是通常制造洗手间的材料(有时还包括洗手盆等其他固定装置)。 这不同于“pipe道”(实际的pipe道和排水道),瓷器为pipe道提供了一个更加用户友好的界面。

Git使用这个术语来类比,将用户通常不需要直接使用的低级命令(“pipe道”)从更加用户友好的高级命令(“瓷器”)中分离出来。

更重要的是,“瓷器”一词适用于高级命令 ,输出:

  • 意味着人类可读
  • 不意味着被parsing
  • 易受变化/演变

这是关键:如果你脚本,你应该使用可能的pipe道命令 ,具有稳定的输出。 不是瓷器命令。

但是, 您可以在脚本中使用一个瓷器命令的输出,该命令有一个 – --porcelain选项 (如下所示),如下所示:

 git status --porcelain git push --porcelain git blame --porcelain 

虽然git包含自己的瓷器层 ,但是它的低级命令足以支持替代瓷器的开发。
对这些低级命令的接口(input,输出,选项集和语义)比瓷级命令要稳定得多,因为这些命令主要用于脚本使用
另一方面,Porcelain命令的界面可能会发生变化,以改善最终用户体验。

请参阅“ 如何以编程方式确定是否有未提交的更改? ”作为使用pipe道命令而不是瓷器命令的示例。


注意:瓷器命令可以有 – 瓷器选项。
例如: git status --porcelain ,它指定一个意思是要parsing输出

 --porcelain 

为脚本提供易于parsing的格式的输出。 这与短输出类似,但在git版本中保持稳定,而且不pipe用户configuration如何。 详情请参阅下文。

上面提到的线程细节:

这在某种程度上是我的错。
“短身份”forms指人类的眼球,由Juniodevise。
有些人也需要一个脚本化的状态输出,所以我打了一个“ – --porcelain ”的格式,closures可configuration的function,如相对path名和着色,并暗示我们不会对格式做进一步的修改。
这个想法是为了防止人们在--short编写脚本,因为它从来不打算保持稳定。
所以呢,虽然 – --porcelain本身稳定的,脚本的,它可能不是parsing器最友好的。 “ -z --porcelain ”格式更是如此,我将它推荐给任何脚本“git状态”

这反映了git用户需要在脚本中使用porcelain命令!
但只有稳定的输出(与 – --porcelain


正如威廉·伯格 评论的那样, git push也是一样的!

 --porcelain 

生成机器可读的输出。
每个ref的输出状态行将被制表符分隔,并发送到stdout而不是stderr
参考文献的完整符号名称将被给出。


正如John Glassmyer 在评论中提出的那样 :

也许这里的瓷器的意思是“适合瓷器文字消费的产出”

这可以得到第一个“ – --porcelainselect”介绍案例的支持
(之前git status --porcelain ,提交6f15787,2009年9月,git 1.7.0 ,
git push --porcelain之前,commit 1965ff7,2009年6月,git 1.6.4 ):

git blame --porcelain

 -p --porcelain 

以devise用于机器消耗的格式显示。

提交b5c698d,2006年10月,git 1.4.4

新选项使命令的本地输出格式发出更容易由瓷器处理的输出

git中的“瓷器”一词的造币和使用实际上是由Mike Taht所作,否则与Linus Torvalds失去了激烈的争论。

http://www.gelato.unsw.edu.au/archives/git/0504/0881.html

事实上,我的一个希望是其他SCM可以使用gitpipe道。
但是,我真的build议你自己使用“git”,而不是“ libgit ”。 也就是说,你把所有的pipe道作为真正的程序,而不是试图与个别的程序联系起来,你可以编写它。

如果你不想要,我不会这样做。
尽pipe如此,将瓷pipe与瓷器分开仍然是有意义的

瓷器是程序和程序套件的可爱名称,具体取决于核心git,提供对核心git的高级访问。 Porcelains比“pipe道”暴露更多的SCM界面。

瓷器 ,Git Wiki

瓷器命令是为人类消费而devise的,而不是那些输出易于计算机parsing的命令。 git status就是一个例子。

Greg Hewgill的回答完全正确。 请注意,还有其他的Git可用的瓷器,包括Easy Git,yap,pyrite和vng。 每个旨在使Git更容易学习/使用社区的某些部分。 所有这些项目的链接都在Easy Git页面上: http : //people.gnome.org/~newren/eg/ 。

瓷器是程序和程序套件的可爱名称,具体取决于核心git,提供对核心git的高级访问。

https://git.wiki.kernel.org/index.php/Porcelain