I am relatively new to bazaar (primarily used cvs, then subversion, and at my current job we're using SourceUnsafe). My current development environment is structured like this:
\dev (shared repository) \trunk \project1 (branch) \project2 (branch) \branches \proj1-bugfix123 (branch of \trunk\project1) \proj1-featureA (branch of \trunk\project1)
Now, if I decide that certain aspects of project1 would be better suited as a library (or assembly, since it is a c# project) rather than classes inside the project, what would be the best approach for structuring this in bazaar. I have come up with two possibilities that I think are viable. The first I think is the "right" way.
\dev (shared repository) \trunk \project1 (branch) \project2 (branch) \libXXX \branches \proj1-bugfix123 \main (branch of \trunk\project1) \libXXX (branch of \trunk\libXXX) \proj1-featureA \main (branch of \trunk\project1) \libXXX (branch of \trunk\libXXX)
The problems with this is that now I need to remember to update the solution file to include the right projects whenever I make a branch and to not push that back, and also to remember to push changes back to both the project and library at the same time (for instance, if featureA in project1 requires changes to libXXX to work).
\dev (shared repository) \trunk \project1 (branch) \project2 (branch) \libXXX \branches \proj1-bugfix123 (branch of \trunk\project1) \libXXX \proj1-featureA (branch of \trunk\project1) \libXXX
The problems with this approach are that if another project, say project3 wanted to use libXXX and be in source control, it would need to be a branch off of project1, with the project1 files deleted. It would be messy.
I suppose there is a third option of having the entire trunk be a branch as in subversion, but that seems to be counter to the way things I think they are supposed to work in bazaar.
If this were done in SourceSafe, I would just do it like the second example, but have the libxxx folders in both places, but shared, since that is the only mechanism sourcesafe has to do it in.