Git – Je l'utilise correctement?

J'ai essayé de mettre en place git récemment, et j'ai rencontré beaucoup de problèmes auxquels il est difficile de find des solutions en ligne, ce qui m'a amené à penser que je peux me méprendre sur la façon dont Git est utilisé.

Le scénario

Le site principal fonctionne sur une boîte Ubuntu, et j'ai aussi un server de test mis en place qui est presque une copy du server live. Il y a actuellement deux développeurs, tous deux développant sur un PC. Ce que je souhaite faire est de créer un référentiel distant sur le server de test, que les deux développeurs peuvent pousser, puis tester leurs modifications sur le site Web normalement (via un browser). Jusqu'à présent, j'ai mis en place un référentiel local et installé Git GUI; Les seules informations que j'ai pu find pour get une mise en pension à distance (que nous pouvons utiliser) sont:

git init --bare 

Je ne peux find aucune information sur la façon d'extraire (<- quel est le bon mot pour cela) le repo dans sa structure de directory php afin que je puisse être utilisé via un browser web.

Mes questions)

1) Est-ce que je fais cela correctement? Si ce n'est pas ce que je comprends mal, et comment puis-je résoudre cela?

OU 2) Si je fais cela correctement, que dois-je faire pour "extraire" le repo?

Merci d'avance!

Solutions Collecting From Web of "Git – Je l'utilise correctement?"

On dirait que vous l'avez fait à mi-path. Oui, vous créez un nouveau référentiel sur le server, mais ce n'est pas le lieu de vie du site en ligne. Le process d'utilisation de git pour gérer un site web (php ou autre) est bien décrit ici .

Créez le référentiel hub sur le server:

 $ mkdir website.git && cd website.git $ git init --bare Initialized empty Git repository in /home/YOU/website.git/ 

Après avoir créé ce référentiel vide, vous devez définir et activer un hook post-réception qui vérifie la dernière arborescence dans DocumentRoot de votre server (doit déjà exister, git ne le créera pas pour vous).

 $ mkdir /var/www/www.example.org $ cat > hooks/post-receive #!/bin/sh GIT_WORK_TREE=/var/www/www.example.org git checkout -f $ chmod +x hooks/post-receive 

Sur le post de travail de votre premier développeur, vous ajoutez le directory distant à la configuration locale, puis vous exportez le contenu du référentiel local vers le directory distant.

 git remote add website ssh://home/YOU/website.git/ git push website +master:refs/heads/master 

Lorsque vous modifiez des éléments localement et que vous importez des modifications, faites un

 git push website 

Le deuxième développeur doit simplement cloner le référentiel distant pour travailler localement.

 git clone ssh://home/YOU/website.git/ 

Bien sûr, vos développeurs voudront garder leurs référentiels synchronisés. Si le server principal a de nouveaux changements dus à l'activité de l'autre développeur, le push échouera, le développeur doit donc extraire la dernière version et résoudre les conflits de fusion, puis réessayer.

Modifier:

Voici un autre tutoriel qui adopte une approche légèrement différente. Plutôt que d'extraire l'arborescence de votre DocumentRoot avec un hook post-réception, il configure un référentiel "principal" dans DocumentRoot et extrait les modifications du référentiel "hub" après un hook de post-mise à jour, et utilise un crochet post-commit pour s'assurer que le "hub" rest synchronisé au cas où des changements sont faits sur le server live.

git flux de travail aperçu

Ce que je fais dans ma configuration git est la suivante:

 git --bare init 

sur le server. Ensuite, je clone ce référentiel localement et l'ajoute à mes repositorys distants git pour que je puisse y accéder.

Je pense que vous pouvez utiliser l' archive git pour "extraire" / exporter le contenu de votre repository. Le référentiel nu ne contiendra que le directory .git du référentiel. Vous devez donc utiliser l'archive pour extraire votre contenu.

Ce que vous pouvez également faire est juste de cloner le repository nu à l'endroit où vous voulez qu'il soit par exemple votre directory php. Ensuite, vous avez tous les files là-bas et pouvez retirer les modifications de votre repository nu.

Pour traiter avec un repository distant, je recommand fortement http://book.git-scm.com/3_dissortingbuted_workflows.html . Dans votre cas, les rubriques Public git repositories et Pushing sont modifiées dans un référentiel public .

En ce qui concerne l'extraction (vous pourriez vouloir dire 'deployment'), elle n'est pas supscope par git – 'le stupide tracker'. La solution la plus simple à votre problème serait simplement de lier symboliquement ln -s dans votre repository git depuis l'endroit où vous voulez extraire votre projet. Cela nécessitera votre code source pour maintenir la structure de directory du projet en cours.

Si vous allez avec la solution de lien symbolique, en supposant que votre repo est dans le ~/project et que vous voulez servir votre projet à partir de ~/public_html :

 $ cd ~/public_html $ ln -s ../project .