2012-09-20 14 views
11

L'operazione di archiviazione dei file in un repository di controllo del codice sorgente come git, mercurial o svn, è denominata commit. Qualcuno sa il motivo alla base di chiamarlo un commit invece di solo check-in?Perché il check-in dei file è chiamato "commit"?

L'inglese non è la mia lingua madre, quindi potrebbe essere un po 'di linguistica, non la prendo abbastanza, ma a cosa sto realmente lavorando? (Speriamo di non commettere un crimine, ma non lo saprai mai.)

È nel significato di "consegnare per la conservazione"? È legato alle transazioni (commit alla fine di una transazione)?

risposta

12

La parola "commit" può anche significare proteggere qualcosa per un uso futuro o per la conservazione. Ad esempio, "Ha commesso la password in memoria". Quando "commetti" i tuoi cambiamenti, li blocchi come sono ora per la conservazione futura.

5

Si consideri anche un repository di controllo di versione è un riferimento come database sono referenziali.
E il termine commit deriva dalla gestione dei dati , rendendo permanente una serie di modifiche provvisorie.
(Si noti che è fa un sacco di senso per git, in cui si aggiungono le modifiche sperimentali per l'indice con git add, prima di registrarli in pronti contro termine con git commit)

un commit nel contesto di questi sistemi di controllo versione fa riferimento a inviando le ultime modifiche del codice sorgente al repository e rendendo queste modifiche parte della revisione principale del repository.
Pertanto, quando altri utenti eseguono uno UPDATE o undal repository, riceveranno l'ultima versione confermata, a meno che non specifichi che desiderano recuperare una versione precedente del codice sorgente nel repository.

1

Copiato alla cieca dal mio macs lex, non lo spiega sufficientemente?

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

E 'principalmente per distinguere le differenze tra un VCS centralizzati come Subversion rispetto a un VCS distribuito. I sistemi centralizzati utilizzano la terminologia "check out" e "check in". Questi termini aiutano a indicare che esiste un hub o un broker centrale che controlla tali operazioni. Ha la connotazione di una "cassetta di sicurezza" che può essere aperta e quindi chiusa. Ciò è particolarmente vero quando un blocco è coinvolto nel file, come è possibile su Subversion/TFS ecc.

DVCS preferiscono una terminologia più agnostica come "commit" e "update" perché esemplifica che non vi è alcun broker centrale coinvolto in quelle operazioni.

Sarebbe anche confusionario "check-in" qualcosa, ma poi deve ancora "push" sul server remoto. "Check in" ha, specialmente in VCS, connotazioni che si tratta di un processo end-to-end. Che ovviamente non sarebbe vero in un DVCS.

Si potrebbe probabilmente creare un alias di comando nel DVCS chiamato "check in" che esegue sia un commit seguito da un push. Per esempio.

+3

Questo è completamente falso. Sia CVS che Subversion, i due sistemi centralizzati più popolari, utilizzano quasi esclusivamente il termine "commit". – user4815162342

+1

Subversion ha mantenuto il commit solo perché era una sostituzione diretta CVS. TFS lo chiama check in e check out. Non vedo come questo sia "completamente falso". La domanda richiedeva una risposta che spiegasse le sottili differenze (in termini di lingua inglese) tra i vari termini e questa risposta lo fornisce. – nbevans

+1

* Subversion only ** retained ** commit * - che è esattamente il mio punto, il termine "commit" è stato infatti utilizzato per decenni da VCS centralizzati. La tua risposta afferma che il termine "commit" è stato introdotto da DVCS per distinguere il termine precedente "check in", che non è il caso. – user4815162342

Problemi correlati