Pushing after merge considered harmful

Óscar Fuentes ofv at wanadoo.es
Tue Jan 26 12:12:27 GMT 2010


Eli Zaretskii <eliz at gnu.org> writes:

[snip]

>> It prevents push to change revno for existing revisions in the branch.
>
> See, that's what confuses me about the description in the docs: a
> "revno" is just a number of a revision.  It is not the revision
> itself.  A revision, AFAIU, is a node in the history DAG.  So why are
> you talking about the revno? do you really mean the revision number,
> or do you mean the revision itself?

No, he means the revision number. That just happened on the Emacs
repository. See revision 99379:

bzr log -n0 -r 99379 -l20

see how it contains revisions that previously were on the left hand
("mainline", if you prefer) of the DAG and had a "top-level" revno
(without dots). Now they are not on the left-hand anymore, so their
revno changed to a dot representation.

This is one of the reasons why using the revid is the only solid way of
referring to revisions. Not only it works across branches, but it keeps
working after performing whatever operation you do on a specific branch.

The revno is just an ordinal for a line on the DAG. If you move
revisions around on the DAG, the ordinal changes.

[snip]

>> Also this option prevents uncommit for this branch. (Again because it 
>> will change mainline history).
>
> The latter of these two sounds like a loss in important functionality.

It looks like a great thing to me. Please note that it doesn't prevent
doing `bzr uncommit' on your private branches. As I said before on the
Emacs ml, doing `bzr uncommit' on a public branch is just asking for
trouble.




More information about the bazaar mailing list