Answers:
“瓷器”是通常用来制造抽水马桶的材料(有时还用于制作其他装置,例如洗脸盆)。这与“管道”(实际的管道和排水管)不同,在“管道”中,瓷器为管道提供了更加用户友好的界面。
Git类似地使用此术语,将用户通常不需要直接使用的低级命令(“管道”)与用户更友好的高级命令(“瓷器”)分开。
更重要的是,术语“瓷器”适用于高级命令,其输出为:
这很关键:如果编写脚本,则应尽可能使用具有稳定输出的管道命令。不是瓷器命令。
但是,您可以使用瓷器命令的输出,该命令--porcelain
在脚本中具有一个选项(如下所示),例如:
git status --porcelain
git push --porcelain
git blame --porcelain
尽管git包括自己的瓷器层,但其低级命令足以支持替代瓷器的开发。
这些低级命令的接口(输入,输出,选项集和语义)比瓷器级命令要稳定得多,因为这些命令主要用于脚本使用。
另一方面,瓷器命令的界面可能会有所更改,以改善最终用户的体验。
请参阅“ 如何以编程方式确定是否存在未提交的更改? ”作为使用管道命令而不是瓷器命令的示例。
注意:瓷器命令可以有一个--porcelain
选项。
例如:git status --porcelain
,它指定要解析的输出。
--porcelain
以易于解析的格式为脚本提供输出。这类似于简短的输出,但是在git版本和所有用户配置下都将保持稳定。有关详情,请参见下文。
上面提到的线程详细说明:
在某种程度上,这是我的错。
“短状态”表单是由Junio设计的,用于人类的眼球。
某些人也想要可脚本化的状态输出,因此我--porcelain
在相同的格式上打了一个“ ”,以关闭可配置功能,例如相对路径名和着色,并隐含地承诺我们不会对该格式进行进一步更改。
这个想法是为了防止人们编写脚本--short
,因为它从来没有打算保持稳定。
是的,虽然--porcelain
它本身是稳定且可编写脚本的,但对于解析器而言可能并不是最友好的。“-z --porcelain
”格式更是如此,我会推荐给任何围绕“ git status”编写脚本的人
对于git用户而言,这反映了在脚本中使用瓷器命令的需要!
但仅具有稳定的输出(带有--porcelain
)
--porcelain
产生机器可读的输出。
每个参考的输出状态行将以制表符分隔并发送到stdout
而不是stderr
。
将给出参考的完整符号名称。
正如John Glassmyer 在评论中所建议的:
也许这里的意思
--porcelain
是“生产适合瓷器脚本消费的输出”。
这可以通过“ --porcelain
选项”介绍的第一个案例来支持
(之前git status --porcelain
,commit 6f15787,2009年9月,git 1.7.0,
之前git push --porcelain
,commit 1965ff7,2009年6月,git 1.6.4):
-p
--porcelain
以专为机器使用而设计的格式显示。
新选项使命令的本机输出格式发出的输出易于使用Porcelain处理。
git push
类似的异常机器可读--porcelain
。
--porcelain
这里的意思是“生产适合瓷器脚本消费的输出”。
git diff-tree --word-diff=porcelain
git中“瓷器”一词的造币和用法实际上是Mike Taht提出的,而与此同时,Linus Torvalds则失去了激烈的争论。
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
实际上,我的希望之一是其他SCM可以只使用git plumbing。
但是,我真的建议您使用“ git”本身,而不要使用任何“libgit
”。即,您将所有管道作为真实程序,而不是尝试链接到各个例程,而是对其进行脚本编写。如果你不想要,我不会。
不过,将水管与瓷器分开仍然有意义。
瓷器是依赖于核心git的程序和程序套件的可爱名称,代表了对核心git的高级访问。瓷器比“管道”具有更多的SCM接口。
瓷器命令是为供人类使用而设计的,而不是其输出易于计算机解析的命令。git status
就是一个例子。
--porcelain
选项时,它是供机器使用的。
git status --porcelain
:以易于解析的格式为脚本提供输出。(...),但无论用户配置如何,在所有Git版本中都将保持稳定。
git status --porcelain
具有可以解析的稳定格式,但是status
命令本身被设计为面向用户(例如,与相对git ls-files
)。
--porcelain
选择!?--porcelain
选项,然后使用输出进行脚本编写。基本上,git的作者暗含承诺不会在任何时间更改其中的任何内容。示例:我可能会使用git status --porcelain
输出并将其用于脚本编写,这完全可以。For more detail, checkout VonC's answer.
--porcelain
在已经“瓷”命令来实现“伪管道”功能混合非常漂亮,使用Git的一般UI设计...;)
--plumbing
(因为您这次是水管工,而不是普通的“瓷器”用户)。
格雷格·休吉尔的答案是完全正确的。请注意,还有其他可用于Git的瓷器,包括Easy Git,yap,黄铁矿和vng。每种方法旨在使Git在社区的某些部分更易于学习/使用。所有这些项目的链接都在Easy Git页面上:http : //people.gnome.org/~newren/eg/。
瓷器是依赖于核心git的程序和程序套件的可爱名称,代表了对核心git的高级访问。
git中的瓷器有两种不同的含义。
这两个含义虽然可以说不是严格矛盾的,但可能会出现矛盾。
但是由于Git最初只是一个版本控制系统的工具包,而不是一个完全用户友好的VCS,因此它具有许多子级命令,这些子命令执行低级工作,并设计为以UNIX样式链接在一起或从脚本中调用。这些命令通常称为Git的“管道”命令,而更人性化的命令称为“瓷器”命令。
--porcelain
/ =porcelain
选项许多Git命令都配有--porcelain
该选项是指用于脚本。
git status
' 文档:
--porcelain[=<version>]
以易于解析的格式为脚本提供输出。这类似于简短的输出,但是无论用户配置如何,在所有Git版本中都将保持稳定。有关详情,请参见下文。
git diff
的文档:
--word-diff[=<mode>]
瓷
使用专用于脚本的基于行的特殊格式。