[kde-community] What is a GitHub pull request exactly?

Kevin Krammer krammer at kde.org
Sat Sep 19 15:32:33 UTC 2015


I have some difficulty understanding the perceived difference in workflow, so 
I'd like to get some input on where my line of thinking and reality differ :-)

The following example deals with clones of a repository and the revision of 
HEAD in the master branch.

Example: akonadiclient, three developers (Bhaskar, Jonathan, Kevin).

Repo: revision of HEAD at master

1) Initial situation

git.kde.org: acbd

Bhaskar: abcd
Jonathan: abcd
Kevin: abcd

2) Kevin creates a patch

git.kde.org: acbd

Bhaskar: abcd
Jonathan: abcd
Kevin: ghij

3) Patch goes to reviewboard

git.kde.org: acbd

Bhaskar: abcd
Jonathan: abcd
Kevin: ghij

4) Patch is reviewed and gets "Ship it". Kevin pushes to git.kde.org

git.kde.org: ghij

Bhaskar: abcd
Jonathan: abcd
Kevin: ghij

5) The other developers update

git.kde.org: ghij

Bhaskar: ghij
Jonathan: ghij
Kevin: ghij

6) KDE gets a github mirror

git.kde.org: ghij
github: ghij

Bhaskar: ghij
Jonathan: ghij
Kevin: ghij

7) A new developer, Fred, clones on github

git.kde.org: ghij
github: ghij
Fred's clone: ghij

Bhaskar: ghij
Jonathan: ghij
Kevin: ghij

8) Fred creates a patch

git.kde.org: ghij
github: ghij
Fred's clone: ghij

Bhaskar: ghij
Jonathan: ghij
Kevin: ghij
Fred: klmn

9) Fred pushes to his clone

git.kde.org: ghij
github: ghij
Fred's clone: klmn

Bhaskar: ghij
Jonathan: ghij
Kevin: ghij
Fred: klmn

10) Fred makes a pull request

git.kde.org: ghij
github: ghij
Fred's clone: klmn

Bhaskar: ghij
Jonathan: ghij
Kevin: ghij
Fred: klmn

Ok, now my understanding is there are two options: (a) someone pulls from 
Fred's clone (b) there is a merge option on GitHub

11a) Kevin pulls from Fred's clone

git.kde.org: ghij
github: ghij
Fred's clone: klmn

Bhaskar: ghij
Jonathan: ghij
Kevin: klmn
Fred: klmn

12a) Kevin puts Fred's patch up on review, pushes it to git.kde.org once it 
gets "Ship it"
 
git.kde.org: klmn
github: klmn
Fred's clone: klmn

Bhaskar: ghij
Jonathan: ghij
Kevin: klmn
Fred: klmn

11b) Kevin used the merge option on github

git.kde.org: ghij
github: klmn
Fred's clone: klmn

Bhaskar: ghij
Jonathan: ghij
Kevin: ghij
Fred: klmn

12b) Kevin pulls from github

git.kde.org: ghij
github: klmn
Fred's clone: klmn

Bhaskar: ghij
Jonathan: ghij
Kevin: klmn
Fred: klmn

13b) Kevin puts the patch of for review, pushes to git.kde.org when it gets 
"Ship it"

git.kde.org: klmn
github: klmn
Fred's clone: klmn

Bhaskar: ghij
Jonathan: ghij
Kevin: klmn
Fred: klmn

So (a) and (b) workflows differ in that in (a) github mirror and git.kde.org 
have the same state, while in (b) the mirror is for a period of time not 
actually a mirror, but "ahead".

Where "ahead" could also mean wrong if "klmn" needs to be modified or gets 
rejected.

Is (b) the problem people keep discussing about?

Because as far as I can tell it is not really an option given that it can lead 
to an inconsistent state of two clone sources that are considered to be 
mirrored.

If the problem is somewhere in (a), where is it?

Cheers,
Kevin
-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-community/attachments/20150919/8f23ef60/attachment.sig>


More information about the kde-community mailing list