full commands git terminology

commands - ¿Qué significa el término "porcelana" en Git?



git full (7)

El término "porcelana" aparece ocasionalmente en la documentación de Git. Qué significa eso?


La porcelana es un nombre lindo para los programas y las suites de programas que dependen del núcleo git, presentando un acceso de alto nivel al núcleo git. Las porcelanas exponen más una interfaz SCM que la "plomería".

- Porcelana , Git Wiki



"Porcelana" es el material con el que generalmente se hacen 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 no necesitan usar directamente (la "plomería") de los comandos de alto nivel más fáciles de usar (la "porcelana").


La acuñación y el uso del término "porcelana" en git fue en realidad por Mike Taht, mientras que de otro modo perdió una discusión acalorada 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 tubería de git.
Pero entonces realmente sugiero que uses "git" en sí, no cualquier " libgit ". Es decir, tomas todas las tuberías como programas reales, y en lugar de intentar enlazar contra rutinas individuales, lo escribirías .

Si no lo quieres, no lo haré.
Sin embargo, todavía tiene sentido separar la tubería de la porcelana .


La respuesta de Greg Hewgill es exactamente correcta. Tenga en cuenta que hay gavetas alternativas disponibles para Git, como Easy Git, yap, pyrite y vng. Cada uno tiene la intención de 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 de Easy Git: http://people.gnome.org/~newren/eg/ .


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.


Más importante aún, el término "porcelana" se aplica a los comandos de alto nivel , con salida:

  • destinado a ser legible por humanos
  • no destinado a ser analizado
  • susceptibles a cambios / evoluciones

Esa es la clave: si hace un script, debe usar, si es posible, comandos de plomería , con salidas estables. No mandos de porcelana.

Sin embargo, puede usar la salida de un comando de porcelana que tiene una opción --porcelain 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) para estos comandos de bajo nivel están destinados a ser mucho más estables que los comandos de nivel de porcelana, ya que estos comandos son principalmente para uso con secuencias de comandos .
La interfaz con los comandos de porcelana, por otro lado, está sujeta a cambios para mejorar la experiencia del usuario final.

Consulte " ¿Cómo puedo determinar de manera programática si hay cambios no confirmados? " Como ejemplo para usar los comandos de plomería en lugar de los de porcelana.

Nota: Un comando de porcelana puede tener una opción --porcelain .
Por ejemplo: git status --porcelain , que designa una salida que debe analizarse .

--porcelain

Dé 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. Vea a continuación para más detalles.

El hilo mencionado arriba detalla:

Esto es mi culpa, hasta cierto punto.
El formulario de "estado corto" está destinado a globos oculares humanos, y fue diseñado por Junio.
Algunas personas también querían una salida de estado de secuencias de --porcelain , así que --porcelain una " --porcelain " en el mismo formato que desactiva las características configurables como las rutas de acceso relativas y el coloreado, y hace una promesa implícita de que no haremos más cambios en el formato .
La idea era evitar que las personas --short alrededor de --short , porque nunca fue pensado para ser estable.
Así que sí, aunque --porcelain por sí mismo es estable y programable, quizás no sea el más amigable para los analizadores. El formato " -z --porcelain " lo es mucho más, y lo recomendaría a cualquier persona que escriba sobre "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 )

Según lo commented por william-berg , lo mismo ocurre con git push !

--porcelain

Produce una salida legible por máquina.
La línea de estado de salida para cada referencia se separará mediante tabulaciones y se enviará a stdout lugar de a stderr .
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 un producto adecuado para el consumo de scripts de porcelana" .

Y eso podría ser respaldado por el primer caso de --porcelain opción " --porcelain "
(antes git status --porcelain , commit 6f15787, septiembre de 2009, git 1.7.0 ,
antes de git push --porcelain , commit 1965ff7, June 2009, git 1.6.4 ):

git blame --porcelain

-p --porcelain

Mostrar en un formato pensado para el consumo de la máquina.

Commit b5c698d, octubre 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 por Porcelain .