在Git文档中偶尔会出现“瓷器”这个词,它是什么意思?
2ul0zpep1#
“瓷器”是马桶(有时还有洗脸盆等其他固定装置)的材料,它与“管道”(实际的管道和排水管)不同,瓷器为管道提供了一个更友好的界面。Git使用这个术语来类比,将用户通常不需要直接使用的低级命令(“plumbing”)与用户友好的高级命令(“ceramine”)分开。
wdebmtf22#
更重要的是,术语"瓷器"适用于高级命令,输出:
这是关键:如果你编写脚本,你应该尽可能的使用 * plumbing * 命令,有稳定的输出。2不要使用陶瓷命令。但是,您可以使用在脚本中有--porcelain选项的ceramine命令的输出(见下文),例如:
--porcelain
git status --porcelain git push --porcelain git blame --porcelain
虽然git包含了自己的瓷器层,但它的底层命令足以支持替代瓷器的开发。这些低级命令的接口(输入、输出、选项集和语义)比陶瓷级命令稳定得多,因为这些命令主要用于脚本化使用。另一方面,为了改善最终用户体验,瓷片命令的界面可能会发生变化。请参阅"如何以编程方式确定是否存在未提交的更改?"作为使用管道命令而不是陶瓷命令的示例。注意:陶瓷命令可以有--porcelain选项。例如:git status --porcelain,它指定要解析的输出。
git status --porcelain
输出的脚本格式要易于解析,这类似于short输出,但无论用户配置如何,在不同的git版本中都保持稳定,详见下文。上面提到的线程详细信息:在某种程度上,这是我的错。"短状态"表格是为人类眼球设计的,由Junio设计。有些人也想要一个脚本化的状态输出,所以我在相同的格式上添加了一个"--porcelain",它关闭了相对路径名和着色等可配置特性,并隐含地承诺我们不会对格式做进一步的更改。这个想法是为了防止人们围绕--short编写脚本,因为它从来没有打算是稳定的。因此,虽然--porcelain本身 * 是 * 稳定的和可脚本化的,但它对解析器可能不是最友好的,"-z --porcelain"格式更是如此,我会向任何围绕"git status"编写脚本的人推荐它这反映了git用户在脚本中使用陶瓷命令的需求!但仅在输出稳定时(使用--porcelain)正如william-berg所评论的,git push也是如此!
--short
-z --porcelain
git push
产生机器可读的输出。每个参考的输出状态行将以制表符分隔,并发送到stdout而不是stderr。将给出参考文献的完整符号名称。正如John Glassmyer在评论中提出的:也许**--porcelain在这里的意思是"生产出适合瓷器脚本消费的产出"**。这可以通过引入"--porcelain选项"的第一个案例来支持(在git status --porcelain , commit 6f15787, September 2009, git 1.7.0之前,在git push --porcelain , commit 1965ff7, June 2009, git 1.6.4之前):git blame --porcelain:
stdout
stderr
git push --porcelain
git blame --porcelain
-p --porcelain
以专为机器消耗量设计的格式显示。Commit b5c698d, October 2006, git 1.4.4
xtupzzrd3#
git中“瓷器”一词的创造和使用实际上是由Mike Taht提出的,而在其他方面则与Linus Torvalds进行了激烈的争论。http://www.gelato.unsw.edu.au/archives/git/0504/0881.html事实上,我的一个希望是其他SCM可以使用git管道。但是我真的建议你使用“git”本身,而不是任何“libgit“。也就是说,你把所有的管道都当作真正的程序,而不是试图链接单独的例程,你会用脚本来编写它。如果你不想要,我就不做。
libgit
不过把水管和瓷器分开还是有意义的
n53p2ov04#
Porcelain是依赖于core git的程序和程序套件的可爱名称,代表了对core git的高级访问。Porcelain公开了更多的SCM接口,而不是“管道”。-- Porcelain, Git Wiki
wlwcrazw5#
如果您想要:1.使用陶瓷命令(用于人类,而不是解析)AND1.可靠地解析它....然后您***可以***添加--porcelain选项,并使用输出编写脚本。
**示例:**我可以使用git status --porcelain并将输出用于脚本编写,没有问题。
(我这样说是出于对git的创造者的最大尊重。批评很容易,特别是在没有指定替代方案的情况下。但对我来说,这些标志似乎令人困惑。)
blmhpbnm6#
陶瓷命令是为人类使用而设计的,而不是输出容易被计算机解析的命令。git status就是一个例子。
git status
ovfsdjhp7#
在git中,瓷器有两种不同的含义。这两个意义,虽然可以说并不完全矛盾,但也可能显得矛盾。
官方Pro Git book:但是,由于Git最初是一个版本控制系统的工具箱,而不是一个完整的用户友好的VCS,它有许多子命令,这些子命令做底层的工作,被设计成UNIX风格的链接在一起或从脚本调用,这些命令通常被称为Git的“plumbing”命令,而更用户友好的命令被称为“ceramine”命令。
=porcelain
许多git命令都带有--porcelain选项,*****是用于编写脚本的。git status '文档:--porcelain[=<version>]以脚本易于解析的格式给予输出。这类似于简短输出,但在Git版本中保持稳定,不受用户配置的影响。详细信息见下文。git diff的文档:--word-diff[=<mode>]瓷器使用专用于脚本使用的基于行的特殊格式。
--porcelain[=<version>]
git diff
--word-diff[=<mode>]
nwwlzxa78#
Greg Hewgill的回答完全正确。请注意,Git还有其他一些可供选择的特性,包括Easy Git、yap、pyrite和vng。每一个都是为了让Git更容易为社区中的某些人学习/使用。所有这些项目的链接都在Easy Git页面上:http://people.gnome.org/~newren/eg/.
kcugc4gi9#
瓷器是依赖于core git的程序和程序套件的可爱名称,代表了对core git的高级访问。https://git.wiki.kernel.org/index.php/Porcelain
9条答案
按热度按时间2ul0zpep1#
“瓷器”是马桶(有时还有洗脸盆等其他固定装置)的材料,它与“管道”(实际的管道和排水管)不同,瓷器为管道提供了一个更友好的界面。
Git使用这个术语来类比,将用户通常不需要直接使用的低级命令(“plumbing”)与用户友好的高级命令(“ceramine”)分开。
wdebmtf22#
更重要的是,术语"瓷器"适用于高级命令,输出:
这是关键:如果你编写脚本,你应该尽可能的使用 * plumbing * 命令,有稳定的输出。2不要使用陶瓷命令。
但是,您可以使用在脚本中有
--porcelain
选项的ceramine命令的输出(见下文),例如:虽然git包含了自己的瓷器层,但它的底层命令足以支持替代瓷器的开发。
这些低级命令的接口(输入、输出、选项集和语义)比陶瓷级命令稳定得多,因为这些命令主要用于脚本化使用。
另一方面,为了改善最终用户体验,瓷片命令的界面可能会发生变化。
请参阅"如何以编程方式确定是否存在未提交的更改?"作为使用管道命令而不是陶瓷命令的示例。
注意:陶瓷命令可以有
--porcelain
选项。例如:
git status --porcelain
,它指定要解析的输出。输出的脚本格式要易于解析,这类似于short输出,但无论用户配置如何,在不同的git版本中都保持稳定,详见下文。
上面提到的线程详细信息:
在某种程度上,这是我的错。
"短状态"表格是为人类眼球设计的,由Junio设计。
有些人也想要一个脚本化的状态输出,所以我在相同的格式上添加了一个"
--porcelain
",它关闭了相对路径名和着色等可配置特性,并隐含地承诺我们不会对格式做进一步的更改。这个想法是为了防止人们围绕
--short
编写脚本,因为它从来没有打算是稳定的。因此,虽然
--porcelain
本身 * 是 * 稳定的和可脚本化的,但它对解析器可能不是最友好的,"-z --porcelain
"格式更是如此,我会向任何围绕"git status"编写脚本的人推荐它这反映了git用户在脚本中使用陶瓷命令的需求!
但仅在输出稳定时(使用
--porcelain
)正如william-berg所评论的,
git push
也是如此!产生机器可读的输出。
每个参考的输出状态行将以制表符分隔,并发送到
stdout
而不是stderr
。将给出参考文献的完整符号名称。
正如John Glassmyer在评论中提出的:
也许**
--porcelain
在这里的意思是"生产出适合瓷器脚本消费的产出"**。这可以通过引入"
--porcelain
选项"的第一个案例来支持(在
git status --porcelain
, commit 6f15787, September 2009, git 1.7.0之前,在
git push --porcelain
, commit 1965ff7, June 2009, git 1.6.4之前):git blame --porcelain
:以专为机器消耗量设计的格式显示。
Commit b5c698d, October 2006, git 1.4.4
xtupzzrd3#
git中“瓷器”一词的创造和使用实际上是由Mike Taht提出的,而在其他方面则与Linus Torvalds进行了激烈的争论。
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
事实上,我的一个希望是其他SCM可以使用git管道。
但是我真的建议你使用“git”本身,而不是任何“
libgit
“。也就是说,你把所有的管道都当作真正的程序,而不是试图链接单独的例程,你会用脚本来编写它。如果你不想要,我就不做。
不过把水管和瓷器分开还是有意义的
n53p2ov04#
Porcelain是依赖于core git的程序和程序套件的可爱名称,代表了对core git的高级访问。Porcelain公开了更多的SCM接口,而不是“管道”。
-- Porcelain, Git Wiki
wlwcrazw5#
简单解释
是的,但是令人困惑的
--porcelain
选项呢?如果您想要:
1.使用陶瓷命令(用于人类,而不是解析)AND
1.可靠地解析它
....然后您***可以***添加
--porcelain
选项,并使用输出编写脚本。**示例:**我可以使用
git status --porcelain
并将输出用于脚本编写,没有问题。(我这样说是出于对git的创造者的最大尊重。批评很容易,特别是在没有指定替代方案的情况下。但对我来说,这些标志似乎令人困惑。)
瓷器/管道术语从何而来?
blmhpbnm6#
陶瓷命令是为人类使用而设计的,而不是输出容易被计算机解析的命令。
git status
就是一个例子。ovfsdjhp7#
在git中,瓷器有两种不同的含义。
这两个意义,虽然可以说并不完全矛盾,但也可能显得矛盾。
A.概念(管道与陶瓷)
官方Pro Git book:
但是,由于Git最初是一个版本控制系统的工具箱,而不是一个完整的用户友好的VCS,它有许多子命令,这些子命令做底层的工作,被设计成UNIX风格的链接在一起或从脚本调用,这些命令通常被称为Git的“plumbing”命令,而更用户友好的命令被称为“ceramine”命令。
B.
--porcelain
/=porcelain
选项许多git命令都带有
--porcelain
选项,*****是用于编写脚本的。git status
'文档:--porcelain[=<version>]
以脚本易于解析的格式给予输出。这类似于简短输出,但在Git版本中保持稳定,不受用户配置的影响。详细信息见下文。
git diff
的文档:--word-diff[=<mode>]
瓷器
使用专用于脚本使用的基于行的特殊格式。
nwwlzxa78#
Greg Hewgill的回答完全正确。请注意,Git还有其他一些可供选择的特性,包括Easy Git、yap、pyrite和vng。每一个都是为了让Git更容易为社区中的某些人学习/使用。所有这些项目的链接都在Easy Git页面上:http://people.gnome.org/~newren/eg/.
kcugc4gi9#
瓷器是依赖于core git的程序和程序套件的可爱名称,代表了对core git的高级访问。
https://git.wiki.kernel.org/index.php/Porcelain