web-dev-qa-db-fra.com

Que signifie le terme "porcelaine" dans Git?

Le terme "porcelaine" apparaît occasionnellement dans la documentation Git. Qu'est-ce que ça veut dire?

390
Jan Hettich

La "porcelaine" est le matériau utilisé pour fabriquer les toilettes (et parfois d’autres accessoires tels que des lavabos). Ceci est différent de la "plomberie" (les tuyaux et les drains actuels), où la porcelaine fournit une interface plus conviviale avec la plomberie.

Git utilise cette terminologie par analogie pour séparer les commandes de bas niveau que les utilisateurs n'ont généralement pas besoin d'utiliser directement (la "plomberie") des commandes de niveau supérieur plus conviviales (la "porcelaine").

449
Greg Hewgill

Plus important encore, le terme "porcelaine" s'applique à commandes de haut nivea , avec une sortie:

  • censé être lisible par un humain
  • non destiné à être analysé
  • susceptible de changements/évolutions

C’est la clé: si vous écrivez un script, vous devriez utiliser si possible plomberie commandes , avec des sorties stables. Pas de commandes en porcelaine.

Cependant, , vous pouvez utiliser le résultat d'une commande de porcelaine comportant une option _--porcelain_ dans le script (voir ci-dessous), comme suit:

_git status --porcelain
git Push --porcelain
git blame --porcelain
_

Bien que git inclue sa propre couche de porcelaine , ses commandes de bas niveau sont suffisantes pour soutenir le développement de porcelaines alternatives.
L’interface (entrée, sortie, ensemble d’options et sémantique) à ces commandes de bas niveau se veut beaucoup plus stable que les commandes de niveau Porcelain, car ces commandes sont principalement destinées à un usage scripté .
Par contre, l'interface avec les commandes de porcelaine est sujette à modification afin d'améliorer l'expérience de l'utilisateur final.

Voir " Comment puis-je déterminer par programme s'il existe des modifications non validées? " à titre d'exemple pour utiliser des commandes de plomberie au lieu de commandes en porcelaine.


Remarque: Une commande de porcelaine peut avoir une option _--porcelain_.
Par exemple: git status --porcelain , qui désigne une sortie destinée à être analysée .

_--porcelain
_

Donnez la sortie dans un format facile à analyser pour les scripts. Ceci est similaire à la sortie courte, mais restera stable entre les versions de git et quelle que soit la configuration de l'utilisateur. Voir ci-dessous pour plus de détails.

Le fil mentionné ci-dessus détaille:

C'est ma faute, dans une certaine mesure.
Le formulaire "à l'état court" est ​​destiné aux globes oculaires humains et a été conçu par Junio.
Certaines personnes voulaient aussi une sortie de statut scriptable, alors j’ai slappé un "_--porcelain_" sur le même format qui désactive les fonctions configurables telles que les chemins et les colorisations, et fait une promesse implicite que nous avons gagné ". t apporter d’autres modifications au format.
L’idée était d’empêcher les gens d’écrire des scripts autour de _--short_, car ils n’avaient jamais été conçus comme stables.
Alors oui, alors que _--porcelain_ est en lui-même est ​​stable et scriptable, ce n’est peut-être pas le plus convivial pour les analyseurs syntaxiques. Le format "_-z --porcelain_" l’est beaucoup plus, et je le recommande à quiconque scriptant autour du "statut git"

Cela reflète la nécessité, pour les utilisateurs de git, d'utiliser des commandes de porcelaine dans leurs scripts!
Mais uniquement avec une sortie stable (avec _--porcelain_)


Comme commenté par william-berg , il en va de même pour git Push !

_--porcelain
_

Produire une sortie lisible par machine.
La ligne d'état de sortie pour chaque référence sera séparée par des tabulations et envoyée à stdout au lieu de stderr.
Les noms symboliques complets des arbitres seront donnés.


Comme John Glassmyer propose dans les commentaires :

Peut-être le sens de _--porcelain_ est-il "sortie qui convient à la consommation par des scripts en porcelaine" .

Et cela pourrait être supporté par le tout premier cas d’introduction de "_--porcelain_ option"
(avant _git status --porcelain_, commit 6f15787, septembre 2009, git 1.7. ,
avant _git Push --porcelain_, commit 1965ff7, juin 2009, git 1.6.4 ):

git blame --porcelain :

_-p
--porcelain
_

Afficher dans un format conçu pour la consommation de la machine.

Commit b5c698d, octobre 2006, git 1.4.4

La nouvelle option permet au format de sortie natif de la commande d'émettre une sortie plus facile à gérer par Porcelain .

411
VonC

Le mot "porcelaine" a été utilisé par Mike Taht, mais a perdu une dispute avec Linus Torvalds.

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

En fait, l’un de mes espoirs était que d’autres SCM puissent utiliser la plomberie git.
Mais à ce moment-là, je suggérerais vraiment que vous utilisiez "git" lui-même, pas n'importe quel "libgit". C'est-à-dire que vous prenez tous la plomberie comme de vrais programmes, et au lieu d'essayer de vous lier à des routines individuelles, vous le le scriptiez .

Si vous ne le voulez pas, je ne le ferai pas.
Cela fait encore du sens de séparer la plomberie de la porcelaine , cependant.

52
dave taht

Porcelain est un joli nom pour des programmes et des suites de programmes dépendant de git, offrant un accès de haut niveau à git. Les porcelaines présentent davantage une interface SCM que la "plomberie".

-- Porcelaine , Git Wiki

20
Johnsyweb

Les commandes de porcelaine sont conçues pour la consommation humaine, par opposition aux commandes dont le résultat est facile à analyser pour les ordinateurs. git status serait un exemple.

7
dahlbyk

La réponse de Greg Hewgill est tout à fait correcte. Notez qu'il existe des porcelaines alternatives disponibles pour Git, notamment Easy Git, yap, pyrite et vng. Chacun est conçu pour rendre Git plus facile à apprendre/utiliser pour certaines parties de la communauté. Des liens vers tous ces projets se trouvent sur la page Easy Git: http://people.gnome.org/~newren/eg/ .

3
Pablo Halpern

Porcelain est un joli nom pour des programmes et des suites de programmes dépendant de git, offrant un accès de haut niveau à git.

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

1
André Puel

Porcelaine vs plomberie

  • Il existe deux types de commandes: "poreclain" et "plomberie".
  • Les commandes " Porcelaine " ne doivent pas être invoquées lors de la programmation/de la création de scripts: elles sont susceptibles de changer et sont destinées aux humains et non aux machines.
  • Les commandes " Plumbing " doivent être utilisées pour les scripts, car elles sont plus stables et moins susceptibles de changer.

Mais qu'en est-il de l'option --porcelain déroutante!!?

  • Si vous voulez: (i) utiliser une commande de porcelaine ET (ii) vous voulez vous assurer que la sortie est destinée à être analysée (rappelez-vous, les commandes de porcelaine sont destinées uniquement aux humains et non à l'analyse), alors vous peut ajouter l'option --porcelain et then utilise le résultat pour les scripts - en gros, les auteurs de git promettent implicitement de ne rien changer à ce moment-là. par exemple. Je peux utiliser git status --porcelain et utiliser la sortie pour la création de scripts, ce serait bien.

D'où vient la porcelaine/plomberie?

Si l'anglais n'est pas votre langue maternelle, alors Greg Hewgill l'explique parfaitement. Pour plus de détails, allez à la caisse VonC's answer.

0
BKSpurgeon