2012-09-20 11 views
11

El acto de registrar archivos en un repositorio de control de fuente como git, mercurial o svn, se llama commit. ¿Alguien sabe el motivo detrás de llamarlo commit en lugar de solo check in?¿Por qué los archivos de comprobación se llaman 'commit'?

El inglés no es mi lengua materna, por lo que podría ser un poco de lingüística. No la entiendo, pero ¿con qué me estoy comprometiendo realmente? (Afortunadamente no estoy cometiendo un crimen, pero nunca lo sabrá).

¿Es en el sentido de "consignar para la conservación"? ¿Está relacionado con transacciones (compromiso al final de una transacción)?

Respuesta

12

La palabra "commit" también puede significar algo para uso futuro o para preservación. Por ejemplo, "Él confió la contraseña a la memoria". Cuando "compromete" sus cambios, los está bloqueando tal como están ahora para su preservación futura.

5

Considere también que un repositorio de control de versiones es un referente, como las bases de datos son referenciales.
Y el término commit viene de administración de datos, lo que hace que un conjunto de cambios tentativos sea permanente.
(Tenga en cuenta que es tiene mucho sentido para git, donde se agrega cambios tentativos para el índice con git add, antes de grabarlas en el repositorio con git commit)

Una confirmación en el contexto de estos sistemas de control de versiones se refiere a presentando los últimos cambios del código fuente al repositorio, y haciendo estos cambios parte de la revisión principal del repositorio.
Por lo tanto, cuando otros usuarios hacen un UPDATE o un checkout del repositorio, recibirán la última versión confirmada, a menos que especifiquen que desean recuperar una versión anterior del código fuente en el repositorio.

1

Copiado a ciegas de mis macs lex, no lo explico lo suficiente?

commit |kəˈmɪt| 
verb (commits, committing, committed) [ with obj. ] 
1 ... 
3 (commit something to) transfer something to (a state or place where it can be kept or preserved): he composed a letter but didn't commit it to paper | she committed each tiny feature to memory. 
• consign (someone) officially to prison, especially on remand: he was committed to prison for contempt of court. 
• send (a person or case) for trial in a higher court: the magistrate decided to commit him for trial . 
• send (someone) to be confined in a psychiatric hospital. 
• refer (a parliamentary or legislative bill) to a committee. 
-4

Es principalmente para distinguir las diferencias entre un VCS centralizados como subversión frente a un control de versiones distribuidos. Los sistemas centralizados usan la terminología de "check out" y "check in". Estos términos ayudan a significar que existe algún centro o intermediario central que controla esas operaciones. Tiene la connotación de una "caja de seguridad" que se puede abrir y luego cerrar. Esto es especialmente cierto cuando un bloqueo está involucrado en el archivo, como es posible en Subversion/TFS, etc.

Los DVCS prefieren terminología más agnóstica como "confirmar" y "actualizar" porque ejemplifica que no hay un intermediario central involucrado en esas operaciones.

También sería confuso "registrar" algo, pero aún así tener que "empujarlo" al servidor remoto. "Check in" tiene, especialmente en VCS, connotaciones de que se trata de un proceso de extremo a extremo. Lo cual por supuesto no sería cierto en un DVCS.

Podría decirse que puede crear un alias de comando en su DVCS llamado "check-in" que realiza tanto una confirmación como un impulso. Por ejemplo.

+3

Esto es completamente falso. Tanto CVS como Subversion, los dos sistemas centralizados más populares, usan casi exclusivamente el término "commit". – user4815162342

+1

Subversion solo retuvo commit porque era un reemplazo directo de CVS. TFS lo llama check-in y check-out. No veo cómo esto es "completamente falso". La pregunta necesitaba una respuesta que explicara las diferencias sutiles (en términos de idioma inglés) entre los diversos términos y esta respuesta proporciona eso. – nbevans

+1

* Subversion solo ** retenido ** commit * - ese es exactamente mi punto, el término "commit" fue de hecho utilizado por los VCS centralizados durante décadas. Su respuesta afirma que el término "commit" fue introducido por DVCS para distinguirlo del antiguo "check in", que no es el caso. – user4815162342

Cuestiones relacionadas