← Back to team overview

dolfin team mailing list archive

Re: [Ufl] [Branch ~ufl-core/ufl/main] 2 revisions removed

 


On 17/06/11 14:33, Martin Sandve Alnæs wrote:
> On 17 June 2011 15:20, Garth N. Wells <gnw20@xxxxxxxxx> wrote:
>>
>>
>> On 17/06/11 14:05, Martin Sandve Alnęs wrote:
>>> On 17 June 2011 12:17, Garth N. Wells <gnw20@xxxxxxxxx> wrote:
>>>>
>>>>
>>>> On 17/06/11 11:04, Anders Logg wrote:
>>>>> On Fri, Jun 17, 2011 at 10:49:47AM +0100, Garth N. Wells wrote:
>>>>>>
>>>>>>
>>>>>> On 17/06/11 10:43, Anders Logg wrote:
>>>>>>> On Fri, Jun 17, 2011 at 10:33:23AM +0100, Garth N. Wells wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> On 17/06/11 10:28, Anders Logg wrote:
>>>>>>>>> On Fri, Jun 17, 2011 at 11:24:21AM +0200, Marie E. Rognes wrote:
>>>>>>>>>>
>>>>>>>>>> On 17. juni 2011, at 11:05, "Garth N. Wells" <gnw20@xxxxxxxxx> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 17/06/11 09:34, Anders Logg wrote:
>>>>>>>>>>>> On Fri, Jun 17, 2011 at 08:46:46AM +0100, Garth N. Wells wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 17/06/11 08:35, Garth N. Wells wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On 12/06/11 21:36, Anders Logg wrote:
>>>>>>>>>>>>>>> On Fri, Jun 10, 2011 at 10:33:41PM +0100, Florian Rathgeber wrote:
>>>>>>>>>>>>>>> On 11/05/11 15:43, Anders Logg wrote:
>>>>>>>>>>>>>>>>>> On Wed, May 11, 2011 at 03:57:52PM +0200, Anders Logg wrote:
>>>>>>>>>>>>>>>>>>> On Tue, May 10, 2011 at 10:57:07PM +0200, Martin Sandve Alnęs wrote:
>>>>>>>>>>>>>>>>>>>> On 10 May 2011 17:52, Anders Logg <logg@xxxxxxxxx> wrote:
>>>>>>>>>>>>>>>>>>>>> On Tue, May 10, 2011 at 03:49:18PM +0200, Martin Sandve Alnęs wrote:
>>>>>>>>>>>>>>>>>>>>>> On 3 May 2011 18:25, Johannes Ring <johannr@xxxxxxxxx> wrote:
>>>>>>>>>>>>>>>>>>>>>>> On Tue, May 3, 2011 at 3:52 PM, Anders Logg <logg@xxxxxxxxx> wrote:
>>>>>>>>>>>>>>>>>>>>>>>> It happens to me a lot. Johannes has tried to explain to me why it
>>>>>>>>>>>>>>>>>>>>>>>> happens a number of times but I still don't understand why.
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> Maybe he can try to explain it again to you and then I might also
>>>>>>>>>>>>>>>>>>>>>>>> understand. :-)
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> I think I just bring up the following instructions (which I think looks good):
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> http://wiki.squid-cache.org/BzrInstructions
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Thanks Johannes.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Basically the problem is that bazaar numbers commits with contiguous
>>>>>>>>>>>>>>>>>>>>>> integers, and when Bob and Alice works locally they will get the same
>>>>>>>>>>>>>>>>>>>>>> commit ids for different commits. When you stand in branch Alice and
>>>>>>>>>>>>>>>>>>>>>> merge from branch Bob, the commit numbers of branch Alice are
>>>>>>>>>>>>>>>>>>>>>> conserved and a single new merge commit is recorded on top there. The
>>>>>>>>>>>>>>>>>>>>>> commit numbers from branch Bob are lost in the merge. Therefore, to
>>>>>>>>>>>>>>>>>>>>>> conserve the commit ids in the central branch, you have to merge from
>>>>>>>>>>>>>>>>>>>>>> your own branch into the server branch, not the other way around.
>>>>>>>>>>>>>>>>>>>>>> Otherwise we can never safely use the commit revisions from the
>>>>>>>>>>>>>>>>>>>>>> central branch, since they may change every time somebody merges the
>>>>>>>>>>>>>>>>>>>>>> 'wrong way'.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> This problem does not occur with hg or git, because they use a hash
>>>>>>>>>>>>>>>>>>>>>> value to identify a each commit.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> So if I'm Bob and Alice has pushed some changes to the main branch
>>>>>>>>>>>>>>>>>>>>> before me, which exact commands should I write?
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Depends on how you set up your repositories, where your branches are
>>>>>>>>>>>>>>>>>>>> located, etc...
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> You really have to read up on it and try it out a bit to understand
>>>>>>>>>>>>>>>>>>>> it, and I doubt I can write it better than what Johannes linked to +
>>>>>>>>>>>>>>>>>>>> the bazaar docs.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> I plan to keep a local repository with multiple branches like this:
>>>>>>>>>>>>>>>>>>>>  ~/dev/fenics/ufl/ - local ufl repository
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Is this a repository? Or is it just a directory named ufl inside which
>>>>>>>>>>>>>>>>>>> you keep a number of different repositories?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Talked to Martin during lunch. Here's a simple summary of what needs
>>>>>>>>>>>>>>>>>> to be done to set things up correctly (Cc to dolfin-dev so everyone else
>>>>>>>>>>>>>>>>>> sees this):
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>  bzr init-repo foo
>>>>>>>>>>>>>>>>>>  cd foo
>>>>>>>>>>>>>>>>>>  bzr checkout lp:foo trunk
>>>>>>>>>>>>>>>>>>  bzr branch trunk work
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> We should add this to the developer page in the documentation.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Everyone should adopt this and we should pick on anyone that pushes
>>>>>>>>>>>>>>>>>> removed changesets.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> There's an effective way to make these pushes impossible and disable the
>>>>>>>>>>>>>>> bzr "feature" of renumbering revisions: set the option
>>>>>>>>>>>>>>> append_revisions_only=True in <yourbranch>/.bzr/branch/branch.conf
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> For branches on launchpad this works as follows:
>>>>>>>>>>>>>>> 1) sftp bazaar.launchpad.net
>>>>>>>>>>>>>>>     cd ~user/project/branch/.bzr/branch
>>>>>>>>>>>>>>>     get branch.conf
>>>>>>>>>>>>>>> 2) edit the downloaded file, adding append_revisions_only = True
>>>>>>>>>>>>>>> 3)   put branch.conf
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I suggest doing this for all branches on launchpad to enforce consistent
>>>>>>>>>>>>>>> revision numbers.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> More background: http://stackoverflow.com/questions/5413602
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks. I've fixed this now for DOLFIN, FFC, UFL, UFC, FIAT.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Could you please undo this. I can't push changes from my personal branch
>>>>>>>>>>>>>> to DOLFIN. I don't see that this change has any use. (If we want cvs,
>>>>>>>>>>>>>> then we should use cvs.)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I've tried to follow the instructions to undo the change, but can't get
>>>>>>>>>>>>>> it to work.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> I've undone this for DOLFIN so I could push my changes.
>>>>>>>>>>>>
>>>>>>>>>>>> You should have figured out how to do the merge properly instead. We
>>>>>>>>>>>> should add it back to force everyone to learn how to use bzr. ;-)
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Merge is 'bzr merge xxx'. That's a proper merge.
>>>>>>>>>>>
>>>>>>>>>>>> The point is to not rewrite history for the common repo. This is not
>>>>>>>>>>>> the same as cvs. It's still distributed but it means merges have to be
>>>>>>>>>>>> done more carefully.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> There is no history re-writing. It's just adding changesets. Unique
>>>>>>>>>>> changeset numbering that bzr does will always be problematic with
>>>>>>>>>>> distributed version control. If you want a unique identifier, use the
>>>>>>>>>>> revision id.
>>>>>>>>>>>
>>>>>>>>>>>> Just do this next time and it should work:
>>>>>>>>>>>>
>>>>>>>>>>>> 1. Make sure you have a local bound dolfin branch:
>>>>>>>>>>>>
>>>>>>>>>>>>  bzr checkout lp:dolfin trunk
>>>>>>>>>>>>
>>>>>>>>>>>> 2. Merge *from* that branch, not push to it:
>>>>>>>>>>>>
>>>>>>>>>>>>  cd trunk
>>>>>>>>>>>>  bzr merge <path to your local repo>
>>>>>>>>>>>>  bzr commit -m merge
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> It just worked before. It was simpler, and I could work against any
>>>>>>>>>>> branch, like by personal branch under dolfin-core.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> After trying the no-revisions-removed approach for a while, I also find it significantly more cumbersome, especially with the main vs personal branches.
>>>>>>>>>>
>>>>>>>>>> Although I see the point, I never encountered a problem with the changing revision numbers before.
>>>>>>>>>
>>>>>>>>> If Garth can't be bothered, maybe you could describe a specific
>>>>>>>>> example that doesn't work?
>>>>>>>>>
>>>>>>>>
>>>>>>>> Why would I bother with something that I think is pointless and
>>>>>>>> cumbersome? Like Marie, I have never had a problem with the present
>>>>>>>> approach.
>>>>>>>
>>>>>>> I disagree. I think there is a point to it and that it's not
>>>>>>> cumbersome.
>>>>>>>
>>>>>>> I'm just asking for a simple example that I can try. Otherwise it's
>>>>>>> just handwaving.
>>>>>>>
>>>>>>
>>>>>> You made the change, so the onus is on you to make a case, not the other
>>>>>> way around. I'm changing it back because I don't have any inclination to
>>>>>> change unless someone can make a case why. The status quo rules until
>>>>>> there is a consensus.
>>>>>>
>>>>>> What I don't want is to work in a CVS way. See:
>>>>>>
>>>>>>   http://wiki.bazaar.canonical.com/BzrForCVSUsers
>>>>>>
>>>>>> It advocates checkout for those who want to keep their CVS work flow,
>>>>>> and says of the approach:
>>>>>>
>>>>>> "This section explains how to perform common CVS behaviours in a Bazaar
>>>>>> world. Unfortunately, this means that I won't be able to teach you many
>>>>>> of the things that are unique to decentralized revision control systems.
>>>>>>
>>>>>> This section covers how to use Bazaar in checkout mode. Reading section
>>>>>> 3, which covers standard Bazaar methods, is highly encouraged."
>>>>>>
>>>>>> Section 3 describes what we've been doing all along.
>>>>>
>>>>> I think you still need to make the case that it doesn't work. I claim
>>>>> it does and if you say that it fails so badly, it should be easy to
>>>>> come up with a single example of where it doesn't work.
>>>>>
>>>>> I've already made the case for the change: to not change history of the
>>>>> common branch (which append_revisions_only prevents).
>>>>>
>>>>
>>>> Which I don't support. I also disagree with the technical point of
>>>> history changes.
>>>>
>>>> A common branch is a centralised concept. I support developers using
>>>> separate feature branches, and using personal branches on Launchpad, and
>>>
>>> I work that way all the time, pushing and pulling branches
>>> between different computers and launchpad branches.
>>>
>>>> the merging this into lp:dolfin.
>>>>
>>>> Garth
>>>
>>> The only difference between the approaches is to merge
>>> your work _into_ lp:dolfin instead of merging lp:dolfin into your work.
>>>
>>
>> I can follow that for simple usage, but I'm often merging between, for
>> example, lp:dolfin and lp:~dolfin-core/dolfin/wells and something in
>> between.
> 
> cd work
> bzr merge lp:~dolfin-core/dolfin/wells && bzr commit
> bzr merge ../localfeaturebranch && bzr commit
> bzr merge lp:~dolfin-core/dolfin/yetanotherfeature && bzr commit
> cd ../trunk
> bzr pull lp:dolfin
> bzr merge ../work && bzr commit
> bzr push lp:dolfin
> 
> I don't see any problem. Your offline problem was probably
> the checkout vs branch issue I mentioned in the other mail.
> Just unbind the trunk/ branch and there is no such problem.
> 
>>> You have educated me on the difference between revision number
>>> and revision id. I thought there was no such thing after some reading.
>>>
>>> I have now tested the command
>>>   bzr branch work -r <revision-id> oldstate
>>> and it works perfectly, with revision-id being a revision
>>> previously 'hidden' behind a merge.
>>>
>>
>> I use 'bzr visualise' and it doesn't hide anything. I see the parallel
>> lines that we used to have with the Mecurial web interface.
>>
>> On the command line
>>
>>  bzr log --include-merges
>>
>> has the same effect.
>>
>>> Thus, if everybody communicates unique revisions with
>>> the revision id and not the revision number, there is no
>>> technical difference between the approaches.
>>>
>>> It is still more convenient to communicate with revision numbers though...
>>>
> 
> 
> This statement is wrong:
> 

The docs

    http://doc.bazaar.canonical.com/latest/en/user-guide/zen.html

say

"Merges do not change revision numbers in a branch, though they do
allocate local revision numbers to newly merged revisions. The only time
Bazaar will change revision numbers in a branch is when you explicitly
ask it to mirror another branch."

>> This will still work if one says #xxx on lp:dolfin. The bzr docs say
>> that the revision numbers on given branch will never change.
>>
>> Garth
> 
> The revision numbers on the lp:dolfin branch _do_ change
> every time you get this "2 revisions removed from branch" mail.

Do you have an example?

We shouldn't be taking this message too literally since revisions are
not being lost.

> This it is exactly what we've been trying to avoid.
> 
> I have no problem communicating with revision ids instead of revision numbers.
>

OK. How about this suggestion: we all try as far as possible to merge
locally, i.e. try not to use 'bzr merge lp:dolfin', but accept that it
will sometimes be required, or much more convenient (see Marie's very
recent message), to merge with lp:dolfin. This approach shouldn't
require using 'checkout' unless ones wishes to adopt this work flow, and
the repository should not be locked to prevent merging.

Garth

> Martin



Follow ups

References