El término "porcelana" aparece ocasionalmente en la documentación de Git. Qué significa eso?
El término "porcelana" aparece ocasionalmente en la documentación de Git. Qué significa eso?
Respuestas:
La "porcelana" es el material con el que generalmente se fabrican los inodoros (y, a veces, otros accesorios como los lavabos). Esto es distinto de "plomería" (las tuberías y desagües reales), donde la porcelana proporciona una interfaz más fácil de usar para la plomería.
Git usa esta terminología en analogía, para separar los comandos de bajo nivel que los usuarios generalmente no necesitan usar directamente (la "plomería") de los comandos de alto nivel más fáciles de usar (la "porcelana").
Más importante aún, el término "porcelana" se aplica a los comandos de alto nivel , con salida:
Esa es la clave: si escribe, debe usar, si es posible , comandos de plomería , con salidas estables. No comandos de porcelana.
Sin embargo, puede usar la salida de un comando de porcelana que tiene una --porcelain
opción en el script (ver a continuación), como:
git status --porcelain
git push --porcelain
git blame --porcelain
Aunque git incluye su propia capa de porcelana , sus comandos de bajo nivel son suficientes para apoyar el desarrollo de porcelanas alternativas.
La interfaz (entrada, salida, conjunto de opciones y la semántica) de estos comandos de bajo nivel está destinada a ser mucho más estable que los comandos de nivel de porcelana, ya que estos comandos son principalmente para uso con script .
La interfaz con los comandos de Porcelain, por otro lado, está sujeta a cambios para mejorar la experiencia del usuario final.
Consulte " ¿Cómo determino programáticamente si hay cambios no confirmados? " Como ejemplo para usar comandos de plomería en lugar de los de porcelana.
Nota: Un comando de porcelana puede tener una --porcelain
opción.
Por ejemplo:, git status --porcelain
que designa una salida destinada a ser analizada .
--porcelain
Proporcione la salida en un formato fácil de analizar para los scripts. Esto es similar a la salida corta, pero se mantendrá estable en las versiones de git e independientemente de la configuración del usuario. Ver abajo para más detalles.
El hilo mencionado anteriormente detalla:
Esto es mi culpa, hasta cierto punto.
La forma de "estado corto" está destinada a los globos oculares humanos y fue diseñada por Junio.
Algunas personas también querían una salida de estado programable, por lo que coloqué un "--porcelain
" en el mismo formato que desactiva las funciones configurables, como nombres de ruta relativos y coloración, y hace una promesa implícita de que no haremos más cambios en el formato.
La idea era evitar que las personas hicieran scripts--short
, porque nunca se pretendió que fuera estable.
Así que sí, aunque--porcelain
por sí solo es estable y programable, quizás no sea el más amigable para los analizadores. El "-z --porcelain
" formato es mucho más, y se lo recomendaría a cualquiera que escriba "git status"
¡Eso refleja la necesidad, para los usuarios de git, de usar comandos de porcelana en sus scripts!
Pero solo con salida estable (con --porcelain
)
Como se ha comentado por William-berg , lo mismo pasa git push
!
--porcelain
Produzca salida legible por máquina.
La línea de estado de salida para cada referencia se separará por tabulaciones y se enviará a enstdout
lugar destderr
.
Se darán los nombres simbólicos completos de las referencias.
Como John Glassmyer propone en los comentarios :
Quizás el significado de
--porcelain
aquí es "producir productos aptos para el consumo de guiones de porcelana" .
Y eso podría estar respaldado por el primer caso de --porcelain
introducción de " opción"
(antes git status --porcelain
, commit 6f15787, septiembre de 2009, git 1.7.0 ,
antes git push --porcelain
, commit 1965ff7, junio de 2009, git 1.6.4 ):
-p
--porcelain
Mostrar en un formato diseñado para el consumo de la máquina.
Commit b5c698d, octubre de 2006, git 1.4.4
La nueva opción hace que el formato de salida nativo del comando emita una salida que es más fácil de manejar con Porcelain .
git push
tiene una lectura mecánica anómala similar --porcelain
.
--porcelain
aquí es "producir productos aptos para el consumo de guiones de porcelana".
git diff-tree --word-diff=porcelain
La acuñación y el uso del término "porcelana" en git fue en realidad de Mike Taht, mientras que, de lo contrario, perdió una acalorada discusión con Linus Torvalds.
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
De hecho, una de mis esperanzas era que otros SCM pudieran usar la fontanería git.
Pero realmente sugeriría que uses "git" en sí, no ninguno "libgit
". Es decir, que tome todas las tuberías como los programas reales, y en lugar de tratar de enlace contra las rutinas individuales, que había script de ella.Si no lo quieres, no lo haré.
Sin embargo, todavía tiene sentido separar la tubería de la porcelana .
Porcelana es un nombre lindo para programas y suites de programas que dependen de core git, que presenta un acceso de alto nivel a core git. Las porcelanas exponen más de una interfaz SCM que la "fontanería".
Los comandos de porcelana están diseñados para el consumo humano, a diferencia de los comandos cuya salida es fácil de analizar para las computadoras. git status
Sería un ejemplo.
--porcelain
opción, es para consumo de máquina.
git status --porcelain
: Proporcione la salida en un formato fácil de analizar para los scripts. (...) pero se mantendrá estable en todas las versiones de Git e independientemente de la configuración del usuario.
git status --porcelain
tiene un formato estable que se puede analizar, pero el status
comando en sí está diseñado para ser dirigido al usuario (en lugar de, por ejemplo git ls-files
).
--porcelain
opción confusa ?--porcelain
opción y luego use la salida para la secuencia de comandos. Básicamente, los autores de git están implícitamente prometiendo no cambiar nada allí, en el corto plazo. ejemplo: puedo usar git status --porcelain
y usar la salida para las secuencias de comandos y eso estaría perfectamente bien.For more detail, checkout VonC's answer.
--porcelain
en comandos ya "porcelana" para lograr la funcionalidad de "pseudo-plomería" combina muy bien con el diseño general de la interfaz de usuario de Git ...;)
--plumbing
(ya que esta vez es un plomero, no un usuario habitual de "porcelana").
La respuesta de Greg Hewgill es exactamente correcta. Tenga en cuenta que hay porcelanas alternativas disponibles para Git, que incluyen Easy Git, yap, pyrite y vng. Cada uno está destinado a hacer que Git sea más fácil de aprender / usar para alguna parte de la comunidad. Los enlaces a todos estos proyectos se encuentran en la página Easy Git: http://people.gnome.org/~newren/eg/ .
Porcelana es un nombre lindo para programas y suites de programas que dependen de core git, que presenta un acceso de alto nivel a core git.
Hay dos significados distintos de porcelana en git.
Estos dos significados, si bien se puede argumentar que no son estrictamente contradictorios, pueden parecer contradictorios.
Pero debido a que Git era inicialmente un kit de herramientas para un sistema de control de versiones en lugar de un VCS completo y fácil de usar, tiene una serie de subcomandos que realizan un trabajo de bajo nivel y fueron diseñados para ser encadenados al estilo UNIX o llamados desde scripts. Estos comandos generalmente se conocen como comandos de "plomería" de Git, mientras que los comandos más fáciles de usar se llaman comandos de "porcelana".
--porcelain
/ =porcelain
opcionesMuchos comandos de git vienen con una --porcelain
opción que está destinada a secuencias de comandos.
git status
' documentación :
--porcelain[=<version>]
Proporcione la salida en un formato fácil de analizar para los scripts. Esto es similar a la salida corta, pero se mantendrá estable en todas las versiones de Git e independientemente de la configuración del usuario. Ver abajo para más detalles.
git diff
's documentación :
--word-diff[=<mode>]
porcelana
Utilice un formato especial basado en líneas destinado al consumo de script.