AS201281 Wiki

Your check engine light is on!

User Tools

Site Tools


gnu_linux_server:code_versioning:bazaar:bzr_ssh_server

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
gnu_linux_server:code_versioning:bazaar:bzr_ssh_server [2011/11/24 23:09] – Ajout du script serveur guillaumegnu_linux_server:code_versioning:bazaar:bzr_ssh_server [2021/01/04 20:41] (current) – external edit 127.0.0.1
Line 127: Line 127:
 ==== Création d'un projet ==== ==== Création d'un projet ====
  
 +Une fois le serveur prêt, il ne reste qu'à créer les projets. Pour gérer les droits d'accès, on va utiliser un groupe et les utilisateurs ayant accès à SSH. On crée donc un groupe pour le projet (surtout si plusieurs personnes vont travailler dessus). 
 +<code bash>groupadd mon_projet</code> 
 +On peut désormais ajouter à ce groupe les utilisateurs qui auront un accès en écriture aux branches. Si l'utilisateur n'existe pas encore on utilisera : 
 +<code bash>adduser --ingroup mon_projet mon_utilisateur</code> 
 +Sinon, on fera plutôt : 
 +<code bash>adduser mon_utilisateur mon_projet</code> 
 +Il faut bien faire attention à l'inversion du nom du groupe et de celui de l'utilisateur d'une commande à l'autre. On peut alors créer le répertoire dans lequel toutes les branches seront présentes pour ensuite modifier son propriétaire qui deviendra le groupe précédemment créé. 
 +<code bash>mkdir /var/bzr/mon_projet 
 +chown :mon_projet /var/bzr/mon_projet</code> 
 +Toutes les branches appartiendront au même groupe et donc tous les membres du groupe devront avoir un accès en lecture et en écriture alors que les autres ne pourront que lire le contenu des branches sans pouvoir le modifier (plutôt classique dans le cas d'un projet open source). C'est dans ce but que l'on va préciser les permissions. 
 +<code bash>chmod ug+rwx,g+s,o+rx,o-w /var/bzr/mon_projet</code> 
 +Après avoir déposé la branche **mainline** qui est la branche principale du développement (l'équivalent de **trunk** avec SVN), tous les développeurs du projet pourront la modifier. Il peut être intéressant pour des raisons de contrôle strict du code validé de n'avoir qu'un seul //gatekeeper// et donc qu'une seule personne ayant accès en écriture à **mainline**. Pour cela, on peut simplement réajuster le propriétaire de cette branche (il est possible de le faire pour toutes les branches). 
 +<code bash>chown mon_utilisateur:mon_utilisateur /var/bzr/mon_projet/mainline</code> 
 +Arrivé ici, il doit être possible pour tout le monde de créer une branche locale ou simplement de télécharger le code avec les commandes suivantes. 
 +<code bash>bzr branch bzr://domaine.tld/mon_projet/branche 
 +bzr checkout bzr://domaine.tld/mon_projet/branche</code> 
 +En revanche, seules les développeurs du projet devraient être capables d'envoyer leurs branches et également de //pusher// leurs modifications sur les différentes branches avec la commande ci-dessous. 
 +<code bash>bzr push bzr+ssh://domaine.tld/var/bzr/mon_projet/branche</code> 
 +**Attention !** Il est très important d'indiquer le chemin complet car c'est ainsi que SSH fonctionne (cela ne dépend pas de Bazaar). 
 +Pour terminer sur la création du projet, il fa&ut savoir que Bazaar fonctionne avec et sans //working-tree//. Une branche qui ne possède pas de working-tree ne permet pas à l'utilisateur de voir concrètement les fichiers. C'est-à-dire que la branche ne contient que l'historique du dépôt. Il est toutefois possible de construire un working-tree dans une branche qui n'en a pas. 
 +<code bash>cd /chemin/vers/branche 
 +bzr chechout .</code> 
 +La branche nommée **mainline** étant la branche mère de toutes les autres (soit par héritage, soit directement), il est impératif que celle-ci possède un working-tree. Cependant, un problème fait sont apparition. En effet, l'action de **push** ne met pas à jour le working-tree. On peut le faire à la main en se connectant via SSH sur la machine puis en exécutant la commande de mise à jour dans la branche. 
 +<code bash>bzr update</code> 
 +Ou alors, on peut utiliser, pour plus de simplicitén le plugin [[https://launchpad.net/bzr-push-and-update|push-and-update]]. En réalité, ce dernier ne fait qu'exécuter automatiquement les commande **push** et **update**. 
 +<code bash>bzr push bzr+ssh://domaine.tld/var/bzr/mon_projet/branche 
 +ssh domain.tld bzr update /var/bzr/mon_projet/branche</code>
gnu_linux_server/code_versioning/bazaar/bzr_ssh_server.1322176181.txt.gz · Last modified: 2021/01/04 20:40 (external edit)