Gitで「磁器」という用語は何を意味しますか?


回答:


515

「磁器」は、トイレの通常の材料です(洗面台などの備品も含まれる場合があります)。これは、磁器が配管へのよりユーザーフレンドリーなインターフェースを提供する「配管」(実際のパイプと排水)とは異なります。

Gitはこの用語を類推して使用し、ユーザーが通常直接使用する必要のない低レベルのコマンド(「配管」)を、よりユーザーフレンドリーな高レベルのコマンド(「磁器」)から分離します。


45
その答えは私には理にかなっていると思いますが、ここでも、Linusがこの用語を作り出したものであると想定しているので、彼の世界を解析するときは、脳をもう少し直接的なものにし、頭が痛くなるように調整する傾向があります。:)
Nick Klauer、2011年

58
Linusが彼の配管が輸送に使用される可能性のある排泄物の潜在的な流れを想像していたかどうか疑問に思わせます。オープンソースコードの配管は汚い仕事ですが、誰かがやらなければなりません。
エヴァンプレイス2014

36
そして、私たちの何人かは、実際のgitの磁器は、配管の上のペンキの層のようなものだと感じています。
hemflit 2014

14
以下の他の答えは、どちらもより真実でより有用です
Charney Kaye

14
他の誰かがこのコミカルを見つけますか?
ベンワイルド

446

さらに重要なこととして、「磁器」という用語は、出力を伴う高レベルのコマンドに適用されます。

  • 人間が読めるようにするためのもの
  • 解析されるものではありません
  • 変更/進化の影響を受けやすい

それが重要です。スクリプトを作成する場合は、可能な場合は安定した出力を備えた配管コマンドを使用する必要があります。磁器コマンドではありません。

ただし、次のように、--porcelainスクリプトにオプションがある磁器コマンドの出力を使用できます(以下を参照)。

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

gitには独自の磁器層が含まれていますが、低レベルのコマンドで代替磁器の開発をサポートできます。
これらの低レベルコマンドへのインターフェイス(入力、出力、オプションのセットとセマンティクス)は、これらのコマンドが主にスクリプトで使用されるため、磁器レベルのコマンドよりもはるかに安定していることを意図しています
一方、Porcelainコマンドへのインターフェースは、エンドユーザーエクスペリエンスを向上させるために変更される可能性があります。

磁器の代わりに配管コマンドを使用する例として、「コミットされていない変更があるかどうかをプログラムで判断するにはどうすればよいですか?」を参照してください。


注:磁器コマンドには--porcelainオプションがあります。
たとえばgit status --porcelain、は、解析対象の出力を示します

--porcelain

スクリプトの解析しやすい形式で出力を提供します。これは短い出力に似ていますが、ユーザー設定に関係なく、gitバージョン全体で安定しています。詳細については、以下を参照してください。

上記のスレッドの詳細:

これは、ある程度、私のせいです。
「ショートステータス」フォーム人間の眼球用であり、Junioによって設計されました。
一部の人々はスクリプト可能なステータス出力も望んでいたので、--porcelain相対パス名や色付けなどの構成可能な機能をオフにする同じ形式で" " を平手打ちし、さらに形式を変更しないことを暗黙のうちに約束しました。安定性を保つことを意図したものではなかったので、
人々がスクリプトを書くのを防ぐの--shortが目的でした。
ええ、--porcelainそれ自体安定していてスクリプトも可能ですが、パーサーにとっておそらく最もフレンドリーではありません。「-z --porcelain」フォーマットの方がはるかに優れているので、「git status」に関するスクリプトを書く人にはお勧めします

これは、gitユーザーにとって、スクリプトで磁器コマンドを使用する必要性を反映しています。
ただし、出力が安定している場合のみ(--porcelain


william-bergがコメントしたように、同じことが!git push

--porcelain

機械可読な出力を生成します。
各refの出力ステータス行はタブ区切りで、stdoutではなくに送信されますstderr
refの完全なシンボリック名が与えられます。


ジョンGlassmyerが提案しているコメントで

おそらく--porcelainここでの意味は「磁器のスクリプトによる消費に適した出力を生成すること」です。

そして、それは「--porcelainオプション」導入の最初のケースでサポートされます
(before git status --porcelain、commit 6f15787、2009年9月、git 1.7.0
before git push --porcelain、commit 1965ff7、2009年6月、git 1.6.4):

git blame --porcelain

-p
--porcelain

機械の消費用に設計された形式で表示します。

コミットb5c698d、2006年10月、git 1.4.4

新しいオプションにより、コマンドのネイティブ出力形式は、Porcelainで処理しやすい出力を生成します


2
git pushは同様に異常な機械可読を持っていることに気づきました--porcelain
william.berg 2013年

13
おそらく、--porcelainここでの意味は「磁器のスクリプトによる消費に適した出力を生成すること」です。
John Glassmyer、2013

@JohnGlassmyerそれは確かに非常にありそうな説明です。私の編集済みの回答を(最後に)参照してください
VonC

1
またgit diff-tree --word-diff=porcelain
ニコラスシャンクス

1
ある意味で@PatrickSanan、はい。それらの出力は、そのオプションで確実に解析できます。
VonC

57

gitの「磁器」という用語の造語と用法は実際にはマイクタートによるものでしたが、それ以外の場合はライナストーバルズとの激しい議論を失っています。

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

実際、私の希望の1つは、他のSCMがgit plumbを使用できることです。
ただし、実際には、「libgit」ではなく「git」自体を使用することをお勧めします。つまり、あなたが取るすべての実際のプログラムとして配管をし、代わりに個々のルーチンに対するリンクしようとする、あなたはいただきたいスクリプトを、それを。

あなたがそれを望まないなら、私はそれをしません。ただし
、配管を磁器から分離することは理にかなっています。


7
面白い。+1。上記の自身の答えは製品の使用からですが、あなたのリンクはその用語の起源であると思われるものを参照しています。
VonC、2013

21

磁器は、コアgitに依存するプログラムおよびプログラムスイートのかわいい名前であり、コアgitへの高レベルのアクセスを提供します。磁器は、「配管」よりも多くのSCMインターフェースを公開します。

- 磁器、Git Wiki


7

磁器のコマンドは、コンピュータが解析しやすい出力を持つコマンドとは対照的に、人間が使用するように設計されています。git status一例です。


8
「磁器」...「人間の消費用」... 私はガラスを食べることができます。(冗談です/簡単に混乱する可能性のある人のための混合比喩に注意してください)
ajm475du 2014

5
磁器のコマンドは人間が使用するためのものですが、この--porcelainオプションを使用する場合は機械が使用するためのものです。
ThomasW 2017

git status --porcelain:スクリプトの解析しやすい形式で出力を提供します。(...)しかし、ユーザー設定に関係なく、Gitバージョン全体で安定したままです。
ティムタム

反対票をありがとう。🙄はい、git status --porcelain解析可能な安定した形式ですが、statusコマンド自体は(たとえばではなくgit ls-files)ユーザー向けに設計されています。
dahlbyk

7

短くて簡単な説明

  • コマンドには「ポアクレイン」と「配管」の2種類があります。
  • Porcelain」コマンド、プログラミング/スクリプティングに依存するべきではありません。それらは変更される可能性が高く、マシンではなく人間を対象としているためです。
  • " Plumbing "コマンドは、より安定しており、変更される可能性が低いため、スクリプトに使用する必要があります。

しかし、紛らわしい--porcelainオプションはどうですか?

  • (i)は磁器のコマンドを使用して、(磁器のコマンドは、人間だけと解析していないために意図されている、覚えておいてください)出力が確実に解析できるようにしたい(II)、その後、あなたは:あなたがしたい場合はできる追加--porcelainオプションをし、その後、スクリプトの出力を使用します。基本的にgitの作者は、すぐそこに何も変更しないことを暗黙のうちに約束しています。例:git status --porcelainスクリプトの出力を使用して使用してもかまいませんが、それで問題ありません。

磁器/配管の用語はどこから来たのですか?


1
紛らわしい--porcelainオプションはどうですか?私はそれを私の答えで
扱い

同意した!上記の回答にリンクを追加しましたFor more detail, checkout VonC's answer.
。– BKSpurgeon

OK、少なくとも--porcelain「磁器」コマンドで指定されたオプションを使用して「疑似配管」機能を実現すると、Gitの一般的なUI設計とうまく調和します...;)
Sz。

1
このオプションが「磁器」と呼ばれる理由はわかりません。コマンド全体はすでに「磁器」です。このオプションを呼び出す必要があります--plumbing(今回は配管工なので、通常の「磁器」ユーザーではありません)。
seeker_of_bacon

3

グレッグ・ヒューギルの答えは正確です。Easy Git、yap、pyrite、vngなど、Gitで利用できる代替の磁器があることに注意してください。それぞれは、コミュニティの一部でGitを簡単に学習/使用できるようにすることを目的としています。これらすべてのプロジェクトへのリンクは、Easy Gitページ(http://people.gnome.org/~newren/eg/)にあります。



1

gitの磁器には2つの異なる意味があります。

これら2つの意味は、厳密に矛盾しているとは言えないかもしれませんが、矛盾しているように見えます。

A.コンセプチュアル(配管vs磁器)

公式のプロGitブック

しかし、Gitは当初、完全なユーザーフレンドリーなVCSではなく、バージョン管理システムのツールキットであったため、低レベルの作業を実行する多数のサブコマンドがあり、UNIXスタイルでチェーンされるか、スクリプトから呼び出されるように設計されました。これらのコマンドは一般にGitの「配管」コマンドと呼ばれ、より使いやすいコマンドは「磁器」コマンドと呼ばれます。

B. --porcelain/ =porcelainオプション

多くのgitコマンドが付属して--porcelainオプションされたスクリプトのためのもの。

git status' ドキュメント

--porcelain[=<version>]

スクリプトの解析しやすい形式で出力を提供します。これは短い出力に似ていますが、ユーザー設定に関係なく、Gitバージョン全体で安定しています。詳細については、以下を参照してください。

git diffドキュメント

--word-diff[=<mode>]

磁器

      スクリプトの使用を目的とした特別な行ベースの形式を使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.