Regarding my point 1), I've experimented locally on my git clone to rewrite 
references
to Trac tickets like "fix #1234" to become "fix 
https://trac.osgeo.org/gdal/ticket/1234";

with

git filter-branch -f --msg-filter 'python /home/even/rewrite.py'  -- trunk

where rewrite.py is

{{{
import sys
msg = sys.stdin.read()

# Don't touch messages that reference other databases
if msg.find('MITAB bug ') >= 0 or msg.find('Safe bug ') >= 0 or 
msg.find('bugzilla') >= 0 or msg.find('Bugzilla') >= 0:
    sys.stdout.write(msg)
    sys.exit(0)

oldpos = 0
old_msg = msg
while True:

    # We already have reference to github pull requests written like
    # 'github #1234', so skip them
    newpos = msg.find('github #', oldpos)
    if newpos >= 0:
        oldpos = newpos + len('github #')
        continue

    # Exception...
    newpos = msg.find('patch #1 ', oldpos)
    if newpos >= 0:
        oldpos = newpos + len('patch #1 ')
        continue

    # Exception...
    newpos = msg.find('bug 1 ', oldpos)
    if newpos >= 0:
        oldpos = newpos + len('bug 1 ')
        continue

    # Fix 'bug 1234'
    newpos = msg.find('bug ', oldpos)
    if newpos >= 0:
        if newpos == len(msg) - 4:
            break
        if not(msg[newpos+4] >= '1' and msg[newpos+4] <= '9'):
            oldpos = newpos + 4
            continue

        msg = msg[0:newpos] + 'https://trac.osgeo.org/gdal/ticket/' + 
msg[newpos+4:]
        oldpos = newpos
        continue

    # Fix 'ticket 1234'
    newpos = msg.find('ticket ', oldpos)
    if newpos >= 0:
        if newpos == len(msg) - 7:
            break
        if not(msg[newpos+7] >= '1' and msg[newpos+7] <= '9'):
            oldpos = newpos + 7
            continue

        msg = msg[0:newpos] + 'https://trac.osgeo.org/gdal/ticket/' + 
msg[newpos+7:]
        oldpos = newpos
        continue

    # Fix '#1234'
    newpos = msg.find('#', oldpos)
    if newpos >= 0:
        if newpos == len(msg) - 1:
            break
        if not(msg[newpos+1] >= '1' and msg[newpos+1] <= '9'):
            oldpos = newpos + 1
            continue

        # Skip stacktraces like '#1 0xdeadbeef'
        space_pos = msg.find(' ', newpos)
        if space_pos > 0 and space_pos + 2 < len(msg) and msg[space_pos + 1] == 
'0' and msg[space_pos + 2] == 'x':
            oldpos = newpos + 1
            continue

        msg = msg[0:newpos] + 'https://trac.osgeo.org/gdal/ticket/' + 
msg[newpos+1:]
        oldpos = newpos
        continue

    break

if msg != old_msg:
    f = open('/tmp/log.txt', 'a')
    f.write('Old message was:\n' + old_msg + 'New message is:\n' + msg + '\n')
    f.close()

sys.stdout.write(msg)
}}}


I'v uploaded the log of the changes (the content of /tmp/log.txt) in 
http://even.rouault.free.fr/log.txt
It shows the original and modified commit messages (just for commits for which 
a modification was done)
In case you have the motivation to actually review it, let me know if you see 
some weird things in it...

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to