On 09/05/2011, at 12:34, Manuel M T Chakravarty wrote:

> Simon Marlow:
>> 
>> - you develop in your working tree and commit patches there.  At
>>  this point it's completely safe to rebase - the patches are only
>>  in one place.
>> 
>> - you pull the patches into the validate tree (you just rebased in
>>  working, so no conflicts or merges required here)
>> 
>> - run validate (takes ~30 mins)
>> 
>> - try to push - oops, someone else already pushed something
>> 
>> - now we have a choice: merge or rebase.
>> 
>>  - merge: we get a merge commit, but later pulling into the working
>>    tree works fine.
>> 
>>  - rebase: no merge commit, but we have to remember to rebase the
>>    working tree again, otherwise the next pull will be a conflict.
>> 
>> I've been doing the rebase scheme and it generally works ok: git notices 
>> when it is rebasing a patch that already exists, and discards it.  But, it's 
>> complicated enough that I'm wary of recommending this as our standard 
>> workflow.  (also, needing rebase feels wrong somehow, but that's more of a 
>> philosophical point).
> 
> I agree with this workflow.  I am not quite sure why you think it is too 
> complicated.  The rule is simple: rebase is a one-way street (it changes 
> patches and doesn't just move them), so you cannot just merge back into the 
> re-based branch.  SimonPJ asked for a recipe of how to proceed with git.  I 
> think you just provided that.

I'm rather lost now. Do we have to do this for the libs, too? Does sync-all 
support rebase? It doesn't seem to. Could this be added?

Also, how do I find out if a branch has been rebased? And how do I rebase two 
branches (or two trees) in sync? As usual, I'm too stupid to understand the git 
docs. This all *is* quite complicated.

Roman



_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to