- O checkout é um bloqueio exclusivo na modificação de uma ramificação de objeto em um repositório.
- O check - in é um lançamento de bloqueio exclusivo.
Existem dois tipos de sistemas de controle de origem, dependendo da menor unidade de ramificação.
1) Por ramificação de repositório (CVS, SVN, GIT, Perforce, ... etc)
Nos produtos em que você ramifica todo o repositório, o checkout geralmente cria ou habilita modificações na ramificação local (cópia) de todo o repositório. Nesses produtos, o check - in geralmente não é utilizado e se torna parte da operação de confirmação , que é ao mesmo tempo check-out da filial remota, aplicação de patch local e check - in da filial remota em operação única. Você não faz check-in na sua filial local, pois esta é permanentemente retirada. (Nota: No GIT, você não se compromete com a ramificação remota, envia sua confirmação local a ela. Diferença estritamente sintática. )
2) Por ramificação de objeto (ClearCase, AccuRev, Oracle ADE)
Nos produtos em que você ramifica objetos individuais, como diretórios, arquivos etc. O conceito de check - out e check - in se aplica por objeto por ramo. Você bloqueará o objeto para modificá-lo no checkout e liberará no check - in . Nesses produtos, você costuma trabalhar em uma ramificação privada onde os bloqueios não impedem ninguém de trabalhar e, no momento da mesclagem de sua ramificação local em uma ramificação compartilhada, os objetos também são verificados na ramificação de fragmento (principal, mestre, ramificação de recurso etc.) ) conflitos de mesclagem são resolvidos e o objeto é verificado na ramificação compartilhada. Isso permite que várias pessoas "confirmem" ao mesmo tempo em ramificações compartilhadas, desde que não modifiquem os mesmos objetos.