2009-11-02 5 views
2

J'ai un serveur Ubuntu et j'ai installé git et gitosis. Je suis nouveau à l'administration du serveur et ont l'arborescence des dossiers gitosis suivant: /home/git/repositoriesGIT, GITOSE, SITE WEB - Chemins

J'édité par clonage gitosis-admin.git à ma machine locale des droits à différents référentiels de l'utilisateur, édité gitosis.conf et a ajouté des clés publiques de l'utilisateur à la keydir et l'a repoussé vers le serveur. Cela a été testé avec divers référentiels et travaux.

Je suis vraiment confus par les tutoriels qui décrivent comment la gitose peut être utilisée pour créer un référentiel qui peut être utilisé pour contrôler la source d'un dossier dans le domaine web.

J'ai créé un référentiel nu dans le dossier Web en utilisant SSH Putty; ajouté et engagé les fichiers. Ensuite, il a été cloné sur la machine locale avec

git clone git(at)server:web_repo.git 

Ceci a été un succès. Le problème est que lorsque je tente de le repousser vers le serveur, un repo est créé dans le chemin/home/git/repositories et le repo du dossier web n'est pas affecté.

J'ai essayé combiner les informations de:

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

http://urbanpuddle.com/articles/2008/07/11/installing-git-on-a-server-ubuntu-or-debian

http://danielmiessler.com/blog/using-git-to-maintain-your-website

http://toroid.org/ams/git-website-howto

http://www.ibm.com/developerworks/web/library/wa-git/

Répondre

0

Avez-vous configuré un hook de post-mise à jour dans le/home/git/repositories-repo, comme décrit dans la section "Activation des mises à jour automatiques lors du changement des modifications de votre Devbox" au http://danielmiessler.com/blog/using-git-to-maintain-your-website? Cela devrait être l'astuce pour obtenir le contenu du repo central au live-clone. Pour que cela fonctionne, l'utilisateur git a besoin d'un accès en écriture au live-clone.

+0

Nous vous remercions de votre réponse. Oui, modifièrent/home/git/dépôts/crochets/fichier post-mise à jour: #/bin/sh # WORKDIR = "/ var/www/dossier/dossier/dossier/html_folder /" export GIT_DIR = "$ WORKDIR/.git" pushd $ WORKDIR>/dev/null git tirer popd>/dev/null Je ne sais pas si exec git-update-server-info est pertinente? Puis 755 le. Je ne sais pas comment configurer l'utilisateur git pour avoir des permissions d'écriture sur le répertoire/var/www/dossier/dossier/dossier/html_folder bien que ... – Tubby

+0

OK, maintenant courez chown -R dans le dossier git repo et ça ne marche toujours pas. – Tubby

+0

Je pense que ce que pfote dit est que vous devriez supprimer le '#' avant l'affectation WORKDIR, car il est commenté. – kusma

0

de ce que vous avez publié dans vos commentaires, votre script shell est cassé, WORKDIR est pas définie (cette ligne est une remarque)

cependant, je ne pense pas que ce soit une bonne idée de ce que vous avez à l'esprit (avec une exception: ce que vous essayez de mettre à jour est votre serveur de développement)

+0

Bon point - mais je pensais que c'était l'idée même de git et de gitose - contrôle de la source restreinte. Bien sûr, nous testons notre code avant d'aller en direct, je veux juste automatiser le processus de git repo au serveur live ... Il semble que Capistrano serait une solution, mais je suis sur un PC gagnant et je voulais éviter d'installer encore plus de logiciels quand il est (apparemment) possible de mettre à jour le site avec les hooks de mise à jour. – Tubby

+0

maintenant que vous mentionnez Capistrano, je pense que je sais ce que vous cherchez: une façon simple de déployer votre matériel. git ne se soucie pas du déploiement, ni la gitose, la mauvaise portée. s'il vous plaît affiner/étendre votre question, n'a pas beaucoup de sens pour en discuter dans les commentaires – pfote

1

Il peut être utile de connaître la version d'ubuntu que vous utilisez. Gitose est probablement dans le dépôt apt-get, et c'est dans Debian Lenny pour sûr. Installation à partir du référentiel est beaucoup plus propre dans mon expérience. Compte tenu du potentiel de problèmes de sécurité dans ce logiciel, je recommande fortement d'utiliser le repo. Mais c'est à toi de voir. Si le tirage et la poussée réussissent, il n'y a pas de mal à cette approche.

Lorsque vous poussez vers un dépôt git avec de la gitose, les crochets (le post-update est celui dont vous avez besoin ici.) Sont exécutés en tant qu'utilisateur gitosis ou git. Je soupçonne que votre problème est lié à cela. Vous pourriez envisager d'écrire un crochet post-update suid, de sorte qu'il puisse s'exécuter en tant que votre compte d'utilisateur ou en tant qu'utilisateur Web-éditeur ou Web-serveur. Vous pouvez alternativement chown -R git:git (ou gitosis:gitosis en fonction de votre configuration) les clones de déploiement locaux.Si vous devez éditer ces dépôts sur le serveur, n'oubliez pas d'utiliser sudo -u git pour apporter les modifications nécessaires en tant qu'utilisateur approprié.

Questions connexes