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