2010-12-15 122 views
6

IntroComment utiliser les extensions Git et Git?

Je l'ai utilisé SVN avant, quand je travaillais en tant que programmeur solo, juste pour garder un enregistrement hors site de ce que je faisais, je sorte de savoir au sujet des idées comme « dépôts » et "commet" et autres, mais pas beaucoup plus que cela. "Branches", "fusionne" et "check out" sont, malheureusement, un mystère pour moi. Je veux commencer à utiliser Git parce que nous avons quelques gars qui travaillent loin du bureau et ils se sont plaints qu'ils ne peuvent parfois pas passer à d'autres systèmes de contrôle de version parce que leur intégration IDE les amène à bouder et tomber quand ils sont hors de contact. L'idée de Git de "Chaque répertoire de travail est un référentiel" semble devoir aller un peu plus loin dans la résolution de ce problème.

Quoi qu'il en soit, j'ai téléchargé les "Extensions Git" pour ajouter les menus contextuels de The Shiny aux fenêtres, etc. et j'ai découvert que je n'avais vraiment aucune idée de la façon dont je devais utiliser ceci pour contrôler mon versioning. Ne trouvant pas quelque chose d'évident après une recherche google, je vous présente le scénario théorique ci-dessous pour dépassement de la pile dans l'espoir que quelqu'un va me dire ce qu'il faut faire, en petits mots:

Scénario

J'ai trois projets. Un projet, ProjectReuse est utilisé par les deux autres projets (ProjectA et ProjectB). Diverses personnes de l'organisation devront modifier le code de chaque projet, en utilisant Visual Studio 2010.

J'ai trois dossiers sur mon bureau, intitulés «ProjectReuse», «ProjectA» et «ProjectB». J'ai la fenêtre Git Extenstions ouverte. Une vache, coiffée d'un chapeau de père Noël, me regarde fixement.

Questions

Que dois-je faire maintenant pour créer les référentiels de telle sorte que plusieurs personnes (y compris ces satanés gars sans toujours-sur place) peuvent accéder à un dépôt quand ils ont besoin , sur site ou hors service, avec ou sans connexion permanente à nos serveurs?

Lorsque le premier utilisateur a besoin d'éditer un fichier, que doit faire le ? Check-out? Branche? Je dois expliquer cela aux autres membres de l'équipe et je suis un peu bancal sur ces concepts, moi-même. J'ai seulement utilisé le contrôle de version pour mes projets solo avant.

patelins et excuses

Le premier "comment puis-je configurer cela?" La question est ce qui m'intéresse le plus, mais je me dis que si je vais demander le guide de l'idiot, je pourrais aussi bien demander qu'il soit aussi utile que possible pour le prochain imbécile qui trébuche sur cette question. Je ne cherche pas de réponses particulièrement approfondies, ici; Je n'ai tout simplement pas une image claire dans mon esprit de la façon dont fonctionne un système de contrôle de version multi-utilisateur. Une fois que j'ai cela en tête, je devrais être capable de mettre le reste ensemble par moi-même.

+0

+1 pour «J'ai ouvert la fenêtre Git Extenstions Une vache, coiffée d'un chapeau de Père Noël, me regarde fixement. lol, c'est ainsi que de nombreux nouveaux utilisateurs se sentent à propos de beaucoup de logiciels. –

Répondre

10

Ok, nous allons obtenir la première chose au sujet de droite git. Git est distribué. Répétez cela pour vous-même autant de fois que nécessaire: il n'y a pas de serveur central, de référentiel central ou même rien de central. Complètement contrairement à SVN, vous n'accédez pas tous à un référentiel (rien de central).

Ce que vous faites est de créer un dépôt quelque part. Puis tout le monde clone (le copie). Maintenant, tout le monde a sa propre copie du référentiel et peut en faire ce qu'il veut.Les noms de branche n'ont même pas besoin d'être cohérents entre les référentiels, bien que de nombreuses personnes le fassent car cela aide.

Alors, comment le configurez-vous? Vous initiez un référentiel puis tout le monde qui le veut le clone. Dans votre cas, je recommanderais que chaque projet ait son propre dépôt git plutôt que de regrouper les trois ensemble.

Mais mais comment diable suis-je censé gérer une équipe de développement, je vous entends dire? Jamais peur. J'ai dit qu'il n'y avait pas de référentiel central, mais cela ne vous empêche pas de désigner l'un des dépôts comme référentiel de publication, et un autre comme étant expérimental ou autre.

Ce dont vous avez besoin, c'est d'un workflow. Typiquement, ce que vous faites est de créer ce référentiel, puis de dire: "tout le monde tire sur le maître ici". Ceci représente votre dernière version "stable". Maintenant, vous dites à tout le monde de se connecter à partir d'ici et de développer leurs nouvelles fonctionnalités. Ils font ça. Au fur et à mesure, vous demandez aux gens de fusionner leurs changements dans leur propre maître ou ailleurs, puis vous, le responsable de publication, vous en tirerez (probablement dans une branche de développement mais vous pourriez bien le faire dans votre maître de publication car il est trivial inverser les commits). La personne suivante met alors à jour son maître et effectue sa fusion. Ils résolvent leurs propres conflits de fusion, etc., et ainsi de suite jusqu'à ce que vous ayez toutes les fonctionnalités que vous voulez. Vous effectuez vos tests, etc. Le référentiel de versions tire vraiment tout cela dans son maître.

En pratique, vous pourriez faire beaucoup de choses différentes. Par exemple, si vous avez beaucoup de monde, vous aurez besoin de beaucoup de communication, car si beaucoup de gens font des changements incompatibles avec votre projet partagé, il y aura quelques commits de fusion. Pour éviter cela, les utilisateurs peuvent tirer/fusionner les uns avec les autres ou utiliser un référentiel «partagé» local.

Cela fonctionne.

+1

Si vous voulez démarrer un workflow de base, jetez un oeil à ceci: http://nvie.com/archives/323. Tenez compte du fait que le flux de travail entre les SCM distribués et centralisés est différent. Prenez votre temps si vous en avez besoin. Et une dernière chose: d'après mon expérience, TortoiseGit est plus mature et plus facile à utiliser que Git Extensions. – Ither

+0

@Ither Oh wow, il y a un TortoiseGit? Je vais définitivement y jeter un coup d'œil. – Frosty840

3

Comme le dit Ninefingers, il suffit d'initialiser un nouveau dépôt et de laisser les autres le cloner. Gardez à l'esprit que lorsque vous voulez un référentiel public (ou central), créez un référentiel partagé et non un référentiel privé. Le plus simple est de créer d'abord un référentiel personnel, puis de le cloner vers un lieu (par exemple, un partage réseau) auquel tout le monde peut accéder en tant que référentiel partagé.

J'ai créé quelques tutoriels vidéo pour Git Extensions ici: http://code.google.com/p/gitextensions/ Les didacticiels vidéo sont un peu vieux et pas très bon puisque je n'ai pas un micro ou des compétences de montage vidéo, mais il devrait être suffisant pour vous commencé.

Bonne chance!