2010-03-29 10 views
1

J'ai un tas de petits projets dans un tas de répertoires différents sur un tas d'ordinateurs différents. J'ai aussi un serveur distant que je peux heureusement bzr + ssh.Placer rapidement des répertoires sous bzr comme référentiel partagé stocké à distance

Il semble qu'il devrait être vraiment facile pour (1) mettre un répertoire sous contrôle bzr ("bzr init; bzr ajouter" - okay, pas de soucis); (2) placer ce répertoire sur le serveur distant ("bzr push" fonctionne, bien sûr); (3) convertir le tout en un référentiel partagé (um ...?); (4) rendre le serveur avoir la copie principale (um? ...); et (5) être en mesure de vérifier dans un format standard SVN-style d'ailleurs. Chaque tutoriel que j'ai vu va dans le mauvais sens ("Je suis l'administrateur du serveur"): il vous dit d'abord d'agiter votre baguette magie init-repo alors que vous êtes connecté au serveur distant, puis de déplacer les fichiers plus, etc etc .; mais le point entier est que je ne veux pas faire tout ce travail occupé une série de fois.

J'ai vu des gens faire cela de la "bonne" façon - quatre ou cinq lignes et tout est configuré, en commençant par un répertoire plein de fichiers sur la machine locale, et se terminant par ce même répertoire toujours là une extraction d'un dépôt partagé à distance (et en prime, faire tout le travail à distance via bzr + ssh pour ne jamais avoir à vous connecter à distance dans un shell séparé). Comment font-ils?

Répondre

2

Je dirais que vous avez inversé les étapes (2) et (3). Je suppose également que vous avez un accès sftp à un répertoire sur la machine distante qui contiendra les dépôts partagés, disons sftp: // rkerr @ server/home/source.

I can't test this, but I think it would go something like: 
(1) bzr init; bzr add 
(2) bzr init-repo --no-trees sftp://[email protected]/home/source/sharedRepo/ 
(3) bzr push --remember sftp://[email protected]/home/source/sharedRepo/branchName 
(4) start calling the server version the master copy* :) 
(4.5) login elsewhere 
(5) bzr checkout sftp://[email protected]/home/source/sharedRepo/branchName 

* D'autres choses utiles à faire serait de modifier les propriétés de * emplacement_installation dans .bzr/branch/branch.conf de la branche initiale. Vraiment, le but de DVCS est qu'aucune branche ne doit vraiment être la branche «maîtresse». Définir des emplacements signifie simplement que Bazaar peut deviner intelligemment quelle branche vous voulez pousser, fusionner, tirer, etc.

+0

C'est certainement une amélioration par rapport à ce que je fais maintenant, merci! Je devrais également lier à la copie à distance après la poussée, non? (Au moins si je veux le mode CVS "vous ne pouvez pas commettre sauf si le serveur est mis à jour", ce que je fais dans le cas présent, comme je le fais en partie à des fins de sauvegarde.) –

+0

Oui, vous avez raison liaison à la branche du serveur. Une fois la branche liée, la validation à distance doit réussir avant que la validation locale réussisse. –

+0

Juste un rappel pour moi-même autant que n'importe qui d'autre: vous avez aussi besoin de 'bzr commit' après' bzr add' dans la première étape sauf si le répertoire est vide; 'bzr + ssh: //' fonctionne bien; 'bzr bind' après push prend aussi le nom de la branche. –