[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bzr document unclear. There is no "conflict markers".

From: Bojan Nikolic
Subject: Re: Bzr document unclear. There is no "conflict markers".
Date: Mon, 04 Jan 2010 20:07:40 +0000
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Richard Stallman <address@hidden> writes:

> The concept of "accepted into the trunk" puzzles me.  If someone has
> write access, he can install his changes into the trunk, right?  So if
> he has committed all his past changes, there's nothing to merge --
> right?
> Are you assuming the case of a person who doesn't have write access
> on Savannah?

Yes, I assumed this was the case, i.e., the developer of the quick-fix
sends his fix using the "bzr send" command and it isn't immediately
integrated onto the trunk. 

To be more concrete, here is a little shell script which illustrates
this scenario and error message you get if you do not use "merge".

# 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 <email address>)

# 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 

# But Merge will work
(cd quickfixes && bzr merge ../trunk && bzr commit --unchanged -m "My fix #2")
The graph it produces is:

PNG image

The graph shows the "divergance" of the histories and the requirement
for merge. Hope it makes it clearer.


Bojan Nikolic          ||          http://www.bnikolic.co.uk

reply via email to

[Prev in Thread] Current Thread [Next in Thread]