# Example for user without write access # This branch represnts the true upstream trunk bzr init upstream-trunk # Add a first revision to trunk (cd upstream-trunk && bzr commit --unchanged -m "Base rivision") # This is the users' version of the trunk bzr branch upstream-trunk trunk (cd trunk && bzr bind ../upstream-trunk) # This is the user's quickfixes branch bzr init quickfixes # Normal development continues on upstream-trunk... (cd upstream-trunk && bzr commit --unchanged -m "Other peoples revision #1") (cd upstream-trunk && bzr commit --unchanged -m "Other peoples revision #2") # Now user wants to make a quick fix: (cd trunk && bzr update) # In this case, bzr pull works, because although there are new # revisions in trunk, they all follow the last revision in quickfixes # and so there isn't a divergance (cd quickfixes && bzr pull ../trunk && bzr commit --unchanged -m "My fix #1") # At this point the user would send their fix # ( cd quickfixes && bzr send ) # Now assume the fix is not integrated on the upstream-trunk, but that # development continues: (cd upstream-trunk && bzr commit --unchanged -m "Other peoples revision #3") # The developer wants to make another quick-fix. First update as before (cd trunk && bzr update) # Now, if (s)he tries to pull this will not work: (cd quickfixes && bzr pull ../trunk && bzr commit --unchanged -m "My fix #2") # The above does not work, because of divergance. You can visualise as: (cd quickfixes && bzr graph-ancestry --no-collapse --merge-branch=../trunk quickfixes.png) # But Merge will work (cd quickfixes && bzr merge ../trunk && bzr commit --unchanged -m "My fix #2")