Artem,

Why do we need a requirement about one commit per pull request? I
understand that we should should avoid garbage in history and properly deal
with merges from master. But I don't see anything wrong with 2-3 commits in
a PR if they are meaningful. E.g., "implemented initial version" -> "fixed
failures in tests" -> "addressed comments from a committer". They should
just contain good comments and (probably) corresponding JIRA ticket number.

In your process (if I understood everything correctly) we will create two
PRs for each feature. This looks weird and confusing for me. And I really
don't understand what issue we're trying to solve here.

I think we should take a look at Spark .py script that can be found here:
https://cwiki.apache.org/confluence/display/SPARK/Committers#Committers-HowtoMergeaPullRequest.
It looks like they already addressed and automated everything we discuss
here.

Thoughts?

-Val

On Fri, Aug 14, 2015 at 7:03 AM, Denis Magda <dma...@gridgain.com> wrote:

> Artem,
>
> Seems that TC doesn't write down comments into a corresponding JIRA issue
> for branches that have 'dev' suffix (like 'ignite-xxx-dev').
>
> I've created a pull-request to merge from 'ignite-1241-dev':
> https://github.com/apache/incubator-ignite/pull/19
>
> I've received an e-mail saying that the request has been received and I
> see that TC triggered the request for validation.
> However, there is no any info left regarding this in a corresponding
> ticket:
> https://issues.apache.org/jira/browse/IGNITE-1241
>
> Meanwhile, here I see that such info from GitHub Bot:
> https://issues.apache.org/jira/browse/IGNITE-1203
>
> In addition I have one more thing to clarify.
> When TC ends validating my changes will it send links to tests' results
> over email or to JIRA ticket?
> Cause as you know TC cleans 'active branches' history and I guess that it
> won't be easy for me to find the results on TC in a couple of days.
>
> --
> Denis
>
>
> On 8/14/2015 1:30 PM, Artem Shutak wrote:
>
>> Alexey,
>>
>> You are right and big thanks for the diagram on the wiki!
>>
>> In bounds of IGNITE-1217
>> <https://issues.apache.org/jira/browse/IGNITE-1217> I've
>> created a script for commiters (see patch). You need to point to the
>> script
>> a contributor_github_user_name and a branch_name_with_contribution. The
>> script just fetchs a remote repository (by contributor_github_user_name)
>> and cherry-picks last commit from this branch to local master - it stores
>> commit author information. So, the commiter can push master at apache git.
>>
>> In this case we have one requirement: a pull-request should have only one
>> commit (as with patches).
>>
>> I've mention next model of development at fork (see steps below). But now,
>> I see it has too many steps. I will think about more simple way.
>> 1. Preparation (need to configure once):
>>
>> git remote add apache
>> https://git-wip-us.apache.org/repos/asf/incubator-ignite
>> git remote my_fork https://github.com/<github_uname>/incubator-ignite.git
>>
>> 2. Forking on jira ignite-xxxx
>> # Update local master from apache repo
>> git checkout master
>> git pull apache master
>>
>> # Create new development branch for the ticket.
>> git checkout -b ignite-xxxx-dev
>>
>> # Some development here with many commits at ignite-xxxx-dev.
>> git commit -a -m 'ignite-xxxx: Intermediate commit 1'
>> ...
>> git commit -a -m 'ignite-xxxx: Intermediate commit 100'
>>
>> # Push at fork
>> git push my_fork ignite-xxxx-dev
>>
>> Now a pull-request can be created. TC will be triggered. To fix some
>> something and rerun TC, you need just fix it at ignite-xxxx-dev and push
>> to
>> fork again, TC will be triggered again for new commit.
>>
>> When TC is green, it needs to create 'final' pull-request branch with one
>> commit. For it:
>> # Update local master from apache repo
>> git checkout master
>> git pull apache master
>>
>> # Create a final pull-request branch for the ticket.
>> git checkout -b ignite-xxxx
>>
>> # Squash all changes at one commit.
>> git merge --squash ignite-xxxx-dev
>> git commit -a -m 'ignite-xxxx: Implemented'
>>
>> Then need to push it to fork and open new pull-request.
>>
>>
>> -- Artem --
>>
>> On Fri, Aug 14, 2015 at 5:30 AM, Alexey Goncharuk <
>> alexey.goncha...@gmail.com> wrote:
>>
>> I forgot that the mailing list takes out all formatting, the diagram meant
>>> to be in a monospaced font :)
>>>
>>> I added it to Ignite wiki:
>>> https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute
>>>
>>> 2015-08-13 19:22 GMT-07:00 Alexey Goncharuk <alexey.goncha...@gmail.com
>>> >:
>>>
>>> While the process of a pull-request creation and CI run is clear for, the
>>>> whole cycle from start to end is still fuzzy. Let me summarize my
>>>> understanding and correct me if I got something wrong.
>>>>
>>>> For any committer/contributor John Doe we will have the following
>>>> structure:
>>>>
>>>>   +------------+             +---------------+
>>>>   +-----------------+
>>>>   |            |   replica   |               |    fork    |
>>>> |
>>>>   | Apache Git | ==========> | GitHub Mirror | ---------> | John Doe's
>>>>
>>> Fork
>>>
>>>> |
>>>>   |            |             |               |            |
>>>> |
>>>>   +------------+             +---------------+
>>>>   +-----------------+
>>>>          ^                                                         ^
>>>>          |                                                         |
>>>>          |                                                         |
>>>>          |
>>>>   +-----------------+
>>>>          |    *Apache Git remote handle for committers*   |
>>>> |
>>>>          +------------------------------------------------|   Local
>>>> clone
>>>> |
>>>>                                                           |
>>>> |
>>>>
>>>>   +-----------------+
>>>> Development is going in the JD's fork and at some point he thinks that
>>>>
>>> the
>>>
>>>> feature is ready to be tested by CI.
>>>>
>>>> He creates a pull request. Usually it takes more than one iteration to
>>>> have a successful CI run, but each pull request sends an e-mail to the
>>>>
>>> dev
>>>
>>>> list. I think we should have some mechanism allowing to differentiate
>>>> "work" pull requests and final pull requests that passed CI and should
>>>> be
>>>> reviewed by a committer. We also need to create (maybe) a maven profile
>>>> with a set of quick tests that cover as much functionality as possible,
>>>>
>>> so
>>>
>>>> that a developer could run it locally before submitting a request to the
>>>>
>>> CI.
>>>
>>>> Let's say now the pull request is approved. If the pull request was
>>>> submitted by a contributor, a committer should pull it to it's local
>>>>
>>> clone.
>>>
>>>> Then commit is pushed to the apache git repository. I glanced through
>>>> the
>>>> Apache Spark development process document [1] and it seems that we
>>>> should
>>>> have a similar script that will properly process commits (squash or
>>>> whatever we need) before the push.
>>>>
>>>> Assuming my understanding is correct and the minor things I mentioned
>>>> above are addressed, I like the new process :)
>>>>
>>>> [1]
>>>> https://cwiki.apache.org/confluence/display/SPARK/Contributing+to+Spark
>>>>
>>>>
>>>> 2015-08-13 18:13 GMT-07:00 Konstantin Boudnik <c...@apache.org>:
>>>>
>>>> On Thu, Aug 13, 2015 at 05:54PM, Dmitriy Setrakyan wrote:
>>>>>
>>>>>> On Thu, Aug 13, 2015 at 5:51 PM, Konstantin Boudnik <c...@apache.org>
>>>>>>
>>>>> wrote:
>>>>>
>>>>>> On Thu, Aug 13, 2015 at 05:40PM, Alexey Goncharuk wrote:
>>>>>>>
>>>>>>>> Maybe I miss a good piece of information about how Git works, but
>>>>>>>>
>>>>>>> I
>>>
>>>> always
>>>>>>>
>>>>>>>> thought that if a pull request is accepted, it will be merged to
>>>>>>>>
>>>>>>> the
>>>
>>>> GitHub
>>>>>>>
>>>>>>>> mirror of Apache Ignite. How will this change get to the original
>>>>>>>>
>>>>>>> Apache
>>>>>
>>>>>> git repository?
>>>>>>>>
>>>>>>> It won't. github repo is a mirror of Apache git mirror. In order to
>>>>>>>
>>>>>> have
>>>>>
>>>>>> the
>>>>>>> changes from github PR to be in visible in the github a committer
>>>>>>>
>>>>>> needs to
>>>>>
>>>>>> commit it into our Apache repo.
>>>>>>>
>>>>>>> Cos, will the original contributor's name be preserved or should the
>>>>>>
>>>>> Ignite
>>>>>
>>>>>> committer add "-author" parameter when committing?
>>>>>>
>>>>> It depends on how the patch file was made. If 'git format-patch' was
>>>>>
>>>> used
>>>
>>>> then
>>>>> the name will be preserved. Otherwise, it won't. Sorry, I don't know
>>>>>
>>>> much
>>>
>>>> about github and I really am not using it.
>>>>>
>>>>> Cos
>>>>>
>>>>> Can somebody explain to me the merge procedure?
>>>>>>>>
>>>>>>>> 2015-08-12 3:15 GMT-07:00 Artem Shutak <ashu...@gridgain.com>:
>>>>>>>>
>>>>>>>> Inline.
>>>>>>>>>
>>>>>>>>> On Wed, Aug 12, 2015 at 10:19 AM, Dmitriy Setrakyan <
>>>>>>>>>
>>>>>>>> dsetrak...@apache.org
>>>>>>>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> On Tue, Aug 11, 2015 at 6:28 AM, Artem Shutak <
>>>>>>>>>>
>>>>>>>>> ashu...@gridgain.com>
>>>>>
>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> And one more question. Is it mandatory to have possibility
>>>>>>>>>>>
>>>>>>>>>> works
>>>>>
>>>>>> via
>>>>>>>
>>>>>>>> patches if we will have pull-request way for contributions?
>>>>>>>>>>>
>>>>>>>>>>> I'd like to have only one approach.
>>>>>>>>>>>
>>>>>>>>>>> Artem, if possible I would allow 2 approaches and document
>>>>>>>>>>
>>>>>>>>> the 2
>>>
>>>> approaches
>>>>>>>>>
>>>>>>>>>> on Wiki.
>>>>>>>>>>
>>>>>>>>>> At least it increases support efforts. And if all will use only
>>>>>>>>>
>>>>>>>> one,
>>>>>
>>>>>> then
>>>>>>>
>>>>>>>> there is a big chance that second will not work properly.
>>>>>>>>>
>>>>>>>>> And, to complete patch-way:
>>>>>>>>> - need to split simple "master" builds and "patch" builds on TC
>>>>>>>>>
>>>>>>>> -
>>>
>>>> I
>>>>>
>>>>>> can do
>>>>>>>
>>>>>>>> it by yourself.
>>>>>>>>> - need to implement git-format-patch.bat for Windows users. It's
>>>>>>>>>
>>>>>>>> not
>>>>>
>>>>>> mandatory, all can be done manually by contributors, but it
>>>>>>>>>
>>>>>>>> would
>>>
>>>> be
>>>>>
>>>>>> nice.
>>>>>>>
>>>>>>>> This script can make any Windows user (I'm not :) ).
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> One question, does a pull request automatically generate a
>>>>>>>>>>
>>>>>>>>> Jira
>>>
>>>> comment
>>>>>>>
>>>>>>>> (see Spark, Camel)?
>>>>>>>>>>
>>>>>>>>>> I will look at mentioned projects. From my view, by default,
>>>>>>>>>
>>>>>>>> GitHub
>>>>>
>>>>>> know
>>>>>>>
>>>>>>>> nothing about our Jira. So, there's no way to GitHub can add any
>>>>>>>>>
>>>>>>>> comments
>>>>>>>
>>>>>>>> to unknown Jira.
>>>>>>>>> DVCS plugin - it's a standard way to acquaint Jira and GitHub
>>>>>>>>>
>>>>>>>> and
>>>
>>>> it
>>>>>
>>>>>> will
>>>>>>>
>>>>>>>> work pretty nice.
>>>>>>>>>
>>>>>>>>> --Artem--
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> -- Artem --
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Aug 11, 2015 at 4:15 PM, Artem Shutak <
>>>>>>>>>>>
>>>>>>>>>> ashu...@gridgain.com>
>>>>>>>
>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Igniters,
>>>>>>>>>>>>
>>>>>>>>>>>> I'm working on
>>>>>>>>>>>>
>>>>>>>>>>> https://issues.apache.org/jira/browse/IGNITE-1217
>>>>>
>>>>>> .
>>>>>>>
>>>>>>>> Currently, everyone can fork Mirror of Apache Ignite on
>>>>>>>>>>>>
>>>>>>>>>>> GitHub (
>>>>>
>>>>>> https://github.com/apache/incubator-ignite), works with
>>>>>>>>>>>>
>>>>>>>>>>> own fork
>>>>>
>>>>>> (create
>>>>>>>>>>
>>>>>>>>>>> branches, commit, pull changes at fork) and then creates a
>>>>>>>>>>>>
>>>>>>>>>>> pull-request
>>>>>>>>>
>>>>>>>>>> to
>>>>>>>>>>>
>>>>>>>>>>>> Mirror of Apache Ignite on GitHub (all changes should be
>>>>>>>>>>>>
>>>>>>>>>>> done in
>>>>>
>>>>>> one
>>>>>>>
>>>>>>>> commit
>>>>>>>>>>>
>>>>>>>>>>>> as in patch-way approach). Then test TC builds will
>>>>>>>>>>>>
>>>>>>>>>>> triggered
>>>>>
>>>>>> automatically. Results can be found by branch filtering by
>>>>>>>>>>>>
>>>>>>>>>>> pattern
>>>>>>>
>>>>>>>> <pull-request-number>/merge. "Merge" suffix here means
>>>>>>>>>>>>
>>>>>>>>>>> pull-request
>>>>>>>
>>>>>>>> merged
>>>>>>>>>>>
>>>>>>>>>>>> with master branch (if pull-request at master branch).
>>>>>>>>>>>>
>>>>>>>>>>>> Notes:
>>>>>>>>>>>>
>>>>>>>>>>>> 1. I tried to use TC plugin for github to see TC result at
>>>>>>>>>>>>
>>>>>>>>>>> pull-request.
>>>>>>>>>>
>>>>>>>>>>> But the plugin works in unexpected way and add comments
>>>>>>>>>>>>
>>>>>>>>>>> not
>>>
>>>> only
>>>>>
>>>>>> to
>>>>>>>
>>>>>>>> pull-requests. Example:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>> https://github.com/apache/incubator-ignite/commit/ae11e9b5aa9af4d0d58e2a16dd3a3331969961df#commitcomment-12635375
>>>
>>>> .
>>>>>>>>>>>> Maybe someone had this problem before?
>>>>>>>>>>>>
>>>>>>>>>>>> 2. I'm looking for a simple way to add information about
>>>>>>>>>>>>
>>>>>>>>>>> new
>>>
>>>> pull-request
>>>>>>>>>>
>>>>>>>>>>> to associated jira.
>>>>>>>>>>>> The better way to use existing Jira plugin for it - DVCS
>>>>>>>>>>>>
>>>>>>>>>>> plugin (
>>>>>
>>>>
>>> https://confluence.atlassian.com/display/BITBUCKET/Linking+Bitbucket+and+GitHub+accounts+to+JIRA
>>>
>>>> ).
>>>>>>>>>>>
>>>>>>>>>>>> But I need both: Jira administration rights to configure
>>>>>>>>>>>>
>>>>>>>>>>> the
>>>
>>>> plugin
>>>>>>>
>>>>>>>> and
>>>>>>>>>
>>>>>>>>>> GitHub password for "apache" user. Or I missed something
>>>>>>>>>>>>
>>>>>>>>>>> and we
>>>>>
>>>>>> can't
>>>>>>>
>>>>>>>> use
>>>>>>>>>>
>>>>>>>>>>> this plugin at Apache infrastructure?
>>>>>>>>>>>> Maybe someone can suggest another solution?
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Artem.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>
>

Reply via email to