2010-10-12 28 views
2

Je suis le seul développeur d'un petit projet. Je camion ce projet avec le bazar. Aux premières étapes je l'ai fait ce qui suit:Créer des branches dans un projet bzr existant

mkdir myProject 
cd myProject 
bzr init 
bzr mkdir src 
bzr mkdir data 
bzr mkdir foo 
.... 

J'ai eu quelques progrès avec ce projet et il contient déjà quelques dizaines de commits. Maintenant, j'ai réalisé que je devais créer des branches pour ce projet. Quelque chose comme

trunk 
rel 
testFeature1 
testFeature2 
... 

Quelle est la meilleure façon d'accomplir cela?

Ce que je ne faisais que:

cd myProject 
mkdir repo 
mv .bzr repo 
mv .bzrignore repo 
del src data foo 

mkdir trunk 
cd trunk 
bzr branch ../repo ./ --use-existing-dir 

Je suis à peu près satisfait du résultat, à l'exception du fait que bzr status émis à l'intérieur myProject/repo se plaint de tous les fichiers manquants.

Maintenant aux questions: mon approche est-elle acceptable? Que dois-je faire à propos des fichiers manquants dans le répertoire repo?

Répondre

2

La façon dont je vais sur ce serait de faire: commencer par un projet comme celui que vous avez créé:

mkdir myProject 
cd myProject 
bzr init 
bzr mkdir src 
bzr mkdir data 
bzr mkdir foo 
.... 
# (As per your steps above) 
bzr add 
bzr ci -m "Done stuff" 

maintenant créer un référentiel et pousser la branche en elle:

# Now make it into a multi-branch project 
cd .. 
# Make a new repository with no working trees 
bzr init-repo --no-trees repo 
# Branch the project into the repository 
bzr branch myProject repo/trunk 
# Get rid of the project (by moving, to keep a backup) 
mv myProject myProject_backup 

commencer maintenant travailler sur une caisse (légère ou autre selon votre préférence):

# Now get a working copy and put it in a separate folder to the repo 
bzr co --lightweight repo/trunk myProject 
# Now do stuff 
cd myProject 
# Hack hack hack 
bzr ci -m "Done stuff" 

N OW vous pouvez créer des branches pour les fonctions ou que ce soit:

# Time to change branch (-b creates the new branch in the repository): 
bzr switch -b testFeature1 
# Now it is a lightweight checkout of ../repo/testFeature1, which is branched off trunk 
# Hack hack hack 
bzr ci -m "Done stuff with testFeature1: seems to work" 

et fusionner les modifications dans le tronc:

bzr switch trunk 
bzr merge ../repo/testFeature1 
bzr ci -m "Merged testFeature1 development." 

Notez que bzr switch prend soit un chemin qui est soit par rapport au répertoire courant, absolu, ou relatif au référentiel lorsque vous êtes lié à un référentiel, mais bzr merge requiert un chemin relatif au répertoire courant ou absolu (non relatif au référentiel).


Cela peut ne pas correspondre à votre flux de travail (et autres caisses), mais il est un moyen assez efficace de parvenir à ce que vous voulez faire. J'espère que cela aide.

+0

Je pense que cela correspond parfaitement à mon flux de travail. Je vous remercie –