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 在评论中提出的那样 :
也许这里的瓷器的意思是“适合瓷器文字消费的产出” 。
这可以得到第一个“ – --porcelain
select”介绍案例的支持
(之前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的高级访问。