2011-08-25 1 views
3

Comme je l'ai Familiarisation avec Git, je me sens de plus en plus que:Un mot pour résumer Git et d'autres DVCS

Git et d'autres DVCS sauter un futher étape que VCS centralisés traditionnels dans ce ils vérifient non seulement fichiers en question, mais aussi la base de données de la version complète .

Je pense que cela est la différence majeure entre DVCS et RCV, et aussi le principal point d'appui de tous les autres avantages de DVCS.

Ou, disons-le ainsi:

Multiple VCS Local + A = centralisée de sauvegarde DVCS.

Changé l'équation ci-dessus à ceci:

multiples Clones locales + centralisée de sauvegarde = DVCS.

À droite?

+0

Pas sûr que votre résumé est exacte. J'ai édité ma réponse. – VonC

Répondre

4

Ce que vous décrivez est la nature même d'un système réparti: l'ensemble du référentiel est cloné (avec son historique complet).

un contrôle de version DVCS se mélange (branchement et étiquettes) avec la publication (push/pull à/de prise en pension à distance)

Mais il y a other characteristics qui différencient un DVCS de RCV.
Surtout dans terms of workflow. Voir "Describe your workflow of using version control (VCS or DVCS)"

Et n'oubliez pas qu'un DVCS doesn't have authorization or authentication. Cependant, il existe des solutions pour fournir celles-ci, par ex. apache2-authn-Redmine en combinaison avec le Redmine Project Management System

Le OP smwikipedia ajoute:

Multiple VCS Local + A = centralisée de sauvegarde DVCS.

Je ne pense pas que vous pouvez résumer de cette façon, d'autant plus qu'il serait difficile d'imiter le push/pull fonctionnalités puisque la plupart des VCS (SVN, ClearCase, Perforce, ...) ont pas « local "repo, seuls les espaces de travail locaux, et dépendent fortement de leur repo central.

+0

La dernière partie sur l'autorisation n'est pas correcte - DVCS permet même de plus grandes possibilités. Si vous voulez le style CVCS classique pour les branches avec authentification, consultez [Redmine] (http://redmine.org), qui fournit un module apache2-auth. – Lars

+0

@Lars: Je ne suis pas sûr de ce que vous entendez par Redmine (et en mentionnant 'auth', qui est pour * authentification *, pas d'autorisation). Si vous considérez un DVCS * seul *, le principe est le suivant: "si vous pouvez y accéder, vous pouvez cloner/tirer/pousser". Aucune autorisation là-bas. Mais si vous coupler un DVCS avec un autre système (SSH, Apache pour l'authentification) (Gitolite pour l'autorisation), vous pouvez obtenir ces fonctionnalités. – VonC

+0

Voilà le point: Ce que j'ai essayé de dire, c'est que vous avez la liberté de choisir votre flux de travail (plus qu'avec CVCS). Le flux de travail DVCS le plus utilisé (ouvert) est celui des requêtes pull. Je clone votre référentiel (pas d'autorisation ou d'authentification), j'effectue mes modifications et je vous envoie une requête, donc c'est à vous de m'autoriser. Dans un environnement d'entreprise, j'utilise l'authentification et l'autorisation pour garder le dépôt privé. Je peux même utiliser un contrôleur d'accès automatique pour accepter uniquement les demandes pull-(ou pousse), si elles passent un test-suite (pour lutter contre la rupture construit dans le développement de l'intégration continue), ... – Lars

0

Si vous voulez vraiment mettre dans une phrase, la principale différence RCV et DVCS pour moi est le fait que tout le monde travaille sur leurs propres versions, interchangeant leurs mises à jour (donc le distribué en DVCS) . Si vous ne le dites pas spécifiquement à git, il ne téléchargera pas toutes les branches d'autres contributeurs.

Découvrez l'idée sous-jacente ou le Bazaar Workflows pour une très belle représentation graphique des possibilités (il est également possible d'utiliser git ou tout autre DVCS comme un CVCS).

0

C'est une différence, oui. Il permet de travailler hors ligne et de propager les changements plus tard.

Une autre différence, qui peut être considérée comme une conséquence, est la gestion de la branche. Lorsque vous travaillez (et commettez) localement, vous créez une nouvelle branche, par conception. La propagation des modifications est simplement une fusion de branches. C'est pourquoi git (et certainement hg et bzr) ont de forts algorithmes de fusion.

(Ma première réponse était simplement « oui ». Pour une fois que je suis content de la limite de 30 car.)

0

Sauf la sauvegarde centralisée est complètement optionnelle. Le repo «central» est une distinction sociale, pas technique. Vous ne consultez pas vraiment la base de données de la version "one". Au contraire, un clone donné est la base de données de version.

Ma description d'une ligne est:

autant de branches que vous voulez, en autant de prises en pension que vous voulez, partager quoi, comment, et avec qui vous voulez.

Questions connexes