You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by Aidan Skinner <ai...@gmail.com> on 2009/10/08 17:39:04 UTC

Re: svn commit: r823151 - /qpid/trunk/qpid/review/changeLogToWiki.py

Is there a reason not to use agenda.py for this?

- Aidan

On Thu, Oct 8, 2009 at 8:44 AM,  <ri...@apache.org> wrote:
> Author: ritchiem
> Date: Thu Oct  8 12:44:31 2009
> New Revision: 823151
>
> URL: http://svn.apache.org/viewvc?rev=823151&view=rev
> Log:
> Added changeLogToWiki.py that just gives you the change log in wiki format. It defaults to trunk/java but can take any SVN url via the -s option
>
> Added:
>    qpid/trunk/qpid/review/changeLogToWiki.py   (with props)
>
> Added: qpid/trunk/qpid/review/changeLogToWiki.py
> URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/review/changeLogToWiki.py?rev=823151&view=auto
> ==============================================================================
> --- qpid/trunk/qpid/review/changeLogToWiki.py (added)
> +++ qpid/trunk/qpid/review/changeLogToWiki.py Thu Oct  8 12:44:31 2009
> @@ -0,0 +1,85 @@
> +#!/usr/bin/env python
> +#
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one
> +# or more contributor license agreements.  See the NOTICE file
> +# distributed with this work for additional information
> +# regarding copyright ownership.  The ASF licenses this file
> +# to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance
> +# with the License.  You may obtain a copy of the License at
> +#
> +#   http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing,
> +# software distributed under the License is distributed on an
> +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> +# KIND, either express or implied.  See the License for the
> +# specific language governing permissions and limitations
> +# under the License.
> +
> +import sys, re
> +from popen2 import popen2, popen3
> +from optparse import OptionParser
> +from xml.dom.minidom import parse, parseString
> +
> +prereqs = ["tr", "svn", "xsltproc", "sed", "grep", "wget"]
> +
> +apacheSVN="https://svn.apache.org/repos/asf/qpid/trunk/qpid/java"
> +
> +svncmd = "svn log %s --xml -r %s:HEAD | tr '\\n\\r|' '  -' | xsltproc svnlog2wiki.xsl - | grep r | sed -e 's/^ *//' | sed -e 's/\\(QPID-[0-9]*\\)/\\[\\1 | https:\\/\\/issues.apache.org\\/jira\\/browse\\/\\1 \]/g'"
> +
> +
> +def get_commits(revision):
> +    (stdout, stdin) = popen2(svncmd % (options.repo,revision))
> +    return add_jira_status(stdout.read())
> +
> +def add_jira_status(commits):
> +    commit_lines = commits.split("\n")
> +    new_commits = []
> +    for commit in commit_lines:
> +        if re.match(".*https://issues.apache.org/.*", commit):
> +            jira = re.findall("QPID-[0-9]*", commit)[0]
> +            jira_xml_url = "http://issues.apache.org/jira/si/jira.issueviews:issue-xml/%s/%s.xml" % (jira, jira)
> +            (stdout, stdin) = popen2("wget -q -O - %s" % jira_xml_url)
> +
> +            jira_dom = parse(stdout)
> +            status = jira_dom.getElementsByTagName("status")[0]
> +            new_commits.append("%s %s | " % (commit, status.lastChild.data))
> +        else:
> +            new_commits.append(commit)
> +
> +    return "\n".join(new_commits)
> +
> +
> +def main():
> +    global options
> +    parser = OptionParser()
> +    parser.add_option("-r", "--revision", dest="revision", action="store",
> +                      type="string",
> +                      help="The first revision to generate logs for")
> +
> +    parser.add_option("-s", "--svn-repo", dest="repo", action="store",
> +                      default=apacheSVN,
> +                     type="string",
> +                      help="Provide a svn repository to process")
> +
> +
> +    (options, args) = parser.parse_args()
> +
> +    # Check that we have what's necessary
> +
> +    notfound = re.compile('^which')
> +    for cmd in prereqs:
> +        (stdout, stdin, stderr) = popen3('which %s' % cmd)
> +        if (notfound.match(stderr.read())):
> +            parser.error ("Could not find command %s, try [apt-get|yum] install %s" %
> +                          (cmd, cmd))
> +
> +    if (options.revision == None):
> +        parser.error("svn revision must be specified")
> +
> +    print(get_commits(options.revision))
> +
> +if __name__ == "__main__":
> +    main()
>
> Propchange: qpid/trunk/qpid/review/changeLogToWiki.py
> ------------------------------------------------------------------------------
>    svn:executable = *
>
>
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:commits-subscribe@qpid.apache.org
>
>



-- 
Apache Qpid - AMQP, JMS, other messaging love http://qpid.apache.org
"A witty saying proves nothing" - Voltaire

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Re: svn commit: r823151 - /qpid/trunk/qpid/review/changeLogToWiki.py

Posted by Martin Ritchie <ri...@apache.org>.
2009/10/9 Aidan Skinner <ai...@gmail.com>:
> On Fri, Oct 9, 2009 at 9:14 AM, Martin Ritchie <ri...@apache.org> wrote:
>> 2009/10/8 Aidan Skinner <ai...@gmail.com>:
>>> Is there a reason not to use agenda.py for this?
>>
>> True is was based on agenda.py. I had planed on allowing the JIRA id
>> detection to be customized as well. Thought it best just to leave the
>> agenda,.py as was until I added the JIRA processing back in.
>
> I don't think there's a big difference is there? I mean, you could
> just make the Jira bit optional in agenda.py and change the behaviour
> in this way. Nobody's using agenda.py anymore anyway. ;)

If that is the case then I'll just merge it all together.

> - Aidan
> --
> Apache Qpid - AMQP, JMS, other messaging love http://qpid.apache.org
> "A witty saying proves nothing" - Voltaire
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:dev-subscribe@qpid.apache.org
>
>



-- 
Martin Ritchie

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Re: svn commit: r823151 - /qpid/trunk/qpid/review/changeLogToWiki.py

Posted by Aidan Skinner <ai...@gmail.com>.
On Fri, Oct 9, 2009 at 9:14 AM, Martin Ritchie <ri...@apache.org> wrote:
> 2009/10/8 Aidan Skinner <ai...@gmail.com>:
>> Is there a reason not to use agenda.py for this?
>
> True is was based on agenda.py. I had planed on allowing the JIRA id
> detection to be customized as well. Thought it best just to leave the
> agenda,.py as was until I added the JIRA processing back in.

I don't think there's a big difference is there? I mean, you could
just make the Jira bit optional in agenda.py and change the behaviour
in this way. Nobody's using agenda.py anymore anyway. ;)

- Aidan
-- 
Apache Qpid - AMQP, JMS, other messaging love http://qpid.apache.org
"A witty saying proves nothing" - Voltaire

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Re: svn commit: r823151 - /qpid/trunk/qpid/review/changeLogToWiki.py

Posted by Martin Ritchie <ri...@apache.org>.
2009/10/8 Aidan Skinner <ai...@gmail.com>:
> Is there a reason not to use agenda.py for this?

True is was based on agenda.py. I had planed on allowing the JIRA id
detection to be customized as well. Thought it best just to leave the
agenda,.py as was until I added the JIRA processing back in.

> - Aidan
>
> On Thu, Oct 8, 2009 at 8:44 AM,  <ri...@apache.org> wrote:
>> Author: ritchiem
>> Date: Thu Oct  8 12:44:31 2009
>> New Revision: 823151
>>
>> URL: http://svn.apache.org/viewvc?rev=823151&view=rev
>> Log:
>> Added changeLogToWiki.py that just gives you the change log in wiki format. It defaults to trunk/java but can take any SVN url via the -s option
>>
>> Added:
>>    qpid/trunk/qpid/review/changeLogToWiki.py   (with props)
>>
>> Added: qpid/trunk/qpid/review/changeLogToWiki.py
>> URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/review/changeLogToWiki.py?rev=823151&view=auto
>> ==============================================================================
>> --- qpid/trunk/qpid/review/changeLogToWiki.py (added)
>> +++ qpid/trunk/qpid/review/changeLogToWiki.py Thu Oct  8 12:44:31 2009
>> @@ -0,0 +1,85 @@
>> +#!/usr/bin/env python
>> +#
>> +#
>> +# Licensed to the Apache Software Foundation (ASF) under one
>> +# or more contributor license agreements.  See the NOTICE file
>> +# distributed with this work for additional information
>> +# regarding copyright ownership.  The ASF licenses this file
>> +# to you under the Apache License, Version 2.0 (the
>> +# "License"); you may not use this file except in compliance
>> +# with the License.  You may obtain a copy of the License at
>> +#
>> +#   http://www.apache.org/licenses/LICENSE-2.0
>> +#
>> +# Unless required by applicable law or agreed to in writing,
>> +# software distributed under the License is distributed on an
>> +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> +# KIND, either express or implied.  See the License for the
>> +# specific language governing permissions and limitations
>> +# under the License.
>> +
>> +import sys, re
>> +from popen2 import popen2, popen3
>> +from optparse import OptionParser
>> +from xml.dom.minidom import parse, parseString
>> +
>> +prereqs = ["tr", "svn", "xsltproc", "sed", "grep", "wget"]
>> +
>> +apacheSVN="https://svn.apache.org/repos/asf/qpid/trunk/qpid/java"
>> +
>> +svncmd = "svn log %s --xml -r %s:HEAD | tr '\\n\\r|' '  -' | xsltproc svnlog2wiki.xsl - | grep r | sed -e 's/^ *//' | sed -e 's/\\(QPID-[0-9]*\\)/\\[\\1 | https:\\/\\/issues.apache.org\\/jira\\/browse\\/\\1 \]/g'"
>> +
>> +
>> +def get_commits(revision):
>> +    (stdout, stdin) = popen2(svncmd % (options.repo,revision))
>> +    return add_jira_status(stdout.read())
>> +
>> +def add_jira_status(commits):
>> +    commit_lines = commits.split("\n")
>> +    new_commits = []
>> +    for commit in commit_lines:
>> +        if re.match(".*https://issues.apache.org/.*", commit):
>> +            jira = re.findall("QPID-[0-9]*", commit)[0]
>> +            jira_xml_url = "http://issues.apache.org/jira/si/jira.issueviews:issue-xml/%s/%s.xml" % (jira, jira)
>> +            (stdout, stdin) = popen2("wget -q -O - %s" % jira_xml_url)
>> +
>> +            jira_dom = parse(stdout)
>> +            status = jira_dom.getElementsByTagName("status")[0]
>> +            new_commits.append("%s %s | " % (commit, status.lastChild.data))
>> +        else:
>> +            new_commits.append(commit)
>> +
>> +    return "\n".join(new_commits)
>> +
>> +
>> +def main():
>> +    global options
>> +    parser = OptionParser()
>> +    parser.add_option("-r", "--revision", dest="revision", action="store",
>> +                      type="string",
>> +                      help="The first revision to generate logs for")
>> +
>> +    parser.add_option("-s", "--svn-repo", dest="repo", action="store",
>> +                      default=apacheSVN,
>> +                     type="string",
>> +                      help="Provide a svn repository to process")
>> +
>> +
>> +    (options, args) = parser.parse_args()
>> +
>> +    # Check that we have what's necessary
>> +
>> +    notfound = re.compile('^which')
>> +    for cmd in prereqs:
>> +        (stdout, stdin, stderr) = popen3('which %s' % cmd)
>> +        if (notfound.match(stderr.read())):
>> +            parser.error ("Could not find command %s, try [apt-get|yum] install %s" %
>> +                          (cmd, cmd))
>> +
>> +    if (options.revision == None):
>> +        parser.error("svn revision must be specified")
>> +
>> +    print(get_commits(options.revision))
>> +
>> +if __name__ == "__main__":
>> +    main()
>>
>> Propchange: qpid/trunk/qpid/review/changeLogToWiki.py
>> ------------------------------------------------------------------------------
>>    svn:executable = *
>>
>>
>>
>> ---------------------------------------------------------------------
>> Apache Qpid - AMQP Messaging Implementation
>> Project:      http://qpid.apache.org
>> Use/Interact: mailto:commits-subscribe@qpid.apache.org
>>
>>
>
>
>
> --
> Apache Qpid - AMQP, JMS, other messaging love http://qpid.apache.org
> "A witty saying proves nothing" - Voltaire
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:dev-subscribe@qpid.apache.org
>
>



-- 
Martin Ritchie

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org