[Cython] Git workflow, branches, pull requests
Vitja Makarov
vitja.makarov at gmail.com
Fri May 6 09:24:40 CEST 2011
2011/5/6 Dag Sverre Seljebotn <d.s.seljebotn at astro.uio.no>:
> On 05/06/2011 08:20 AM, Vitja Makarov wrote:
>>
>> 2011/5/6 Robert Bradshaw<robertwb at math.washington.edu>:
>>>
>>> I don't like the default to be "don't pull from me"--I'd rather there
>>> be some convention to indicate a branch is being used as a queue.
>>> Maybe even foo-queue, or a leading underscore if people like that.
>>>
>>> On Thu, May 5, 2011 at 2:03 PM, Dag Sverre Seljebotn
>>> <d.s.seljebotn at astro.uio.no> wrote:
>>>>
>>>> Yes, that is the only time it happens.
>>>>
>>>> Do we agree on a) ask before you pull anything that is not in cython/*
>>>> (ie
>>>> in private repos), b) document it in hackerguide?
>>>>
>>>> DS
>>>>
>>>>
>>>> --
>>>> Sent from my Android phone with K-9 Mail. Please excuse my brevity.
>>>>
>>>> Robert Bradshaw<robertwb at math.washington.edu> wrote:
>>>>>
>>>>> On Thu, May 5, 2011 at 1:22 PM, Stefan Behnel<stefan_ml at behnel.de>
>>>>> wrote:
>>>>>>
>>>>>> Dag Sverre Seljebotn, 05.05.2011 21:52:>> >> There was just a messup
>>>>>> in
>>>>>
>>>>> git history: Mark's OpenMP pull request got>> merged twice; all
>>>>> commits
>>>>> show up two times.> > What (I think) happened, was that Vitja pulled
>>>>> in
>>>>> Mark's changes into his> unreachable code removal branch, and they
>>>>> ended up
>>>>> in his pull request. I> guess I was assuming that git wouldn't care
>>>>> too
>>>>> much about branch> duplication, so I just accepted the pull request
>>>>> via the
>>>>> web interface.> Apparently, it did care.> > I tend to rebase my
>>>>> local
>>>>> change sets before pushing them, and I think it> makes sense to
>>>>> continue
>>>>> doing that. +1, I think for as-yet-unpublished changes, it makes the
>>>>> most
>>>>> sense to rebase, but for a longer-term branch, merging isn't as
>>>>> disruptive
>>>>> to the history (in fact is probably more reflective of what's going on)
>>>>> and
>>>>> is much better than duplication. To clarify, is this only a problem
>>>>> when we
>>>>> have A cloned from master B cloned from A (or from master and then
>>>>> pulls in
>>>>> A) A rebases A+B merged into master ? If this is the case, then we
>>>>> could
>>>>> simply make the rule that you should ask before hacking a clone atop
>>>>> anything but master. (Multiple people can share a repeatedly-rebased
>>>>> branch,
>>>>> right.) We could also us the underscore (or another) convention to mean
>>>>> "this branch is being used as a queue, puller beware." Surely other
>>>>> projects
>>>>> have dealt with this. - Robert
>>
>>
>> About my branch:
>>
>> I've rebased it from upstream/master at home and made "forced push"
>> At work I pulled it back and rebased from origin, then I tried to
>> rebase if again from upstream/master
>
> Do I understand correctly that you:
>
> a) You make local changes at home
> b) Rebase them on cython/master
> c) Force-push to vitja/somebranch
> d) Go to work, where you have other local changes
> e) Rebase your work changes at work on top of vitja/somebranch
>
Right.
> If this is correct; then this can't work. The reason is that after the
> force-push in c), there are no shared commits (apart from what's shared from
> cython/master) between your work computer and vitja/somebranch.
>
> So the rule is: If you rebase a branch, then if you have other copies of
> that branch (like on a work computer), destroy them (e.g., git branch -D)!
> And then fetch new copies of the branches.
>
> (And as you say, if you do have different changes in many places then you
> can recover from an unfortunate rebase by cherry-picking. And you can always
> undo a rebase by looking at "git reflog" and manually check out the old
> HEAD.)
>
Thank you for explanation.
So btw, when I do rebase and my changes were already pushed I have to
use forced push.
Is forced push ok?
--
vitja.
More information about the cython-devel
mailing list