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. >>>>>>>>>>>> >>>>>>>>>>>> >>>> >