[ANN] pidgin git import v5

Felipe Contreras felipe.contreras at gmail.com
Mon May 21 12:02:38 EDT 2012


Hi,

Here's a new version of the conversion scripts.

The major change is that I wrote a script to compare a git and
mercurial repo, thanks to this script, I've managed to track various
discrepancies between the mercurial and git scripts. After fixing all
those discrepancies, the repositories match 100% (except formatting
differences; hg convert seems to strip some lines from the commit
messages, and git author limitations: 'John Doe' -> 'John Doe
<unknown>'). All the graph matches as well; there's no single commit
lost.

I haven't checked the file contents yet, but I don't think there will
be any issues in 'mtn git_export'.

Also, there is now support to split certain unmerged branches to
separate repositories. This is better than the mercurial scripts
version because a) it actually works, and b) there's no need to figure
which branches have been merged or not; git figures that out
automatically. And of course it's *much* faster.

Finally, I've enabled the --log-revids and --log-certs options to 'mtn
git_export' and also removed --use-one-changelog so *all* the monotone
information is retained.

Here's an example of the information attached at the end; all
important certs, even if duplicate are listed:

    Monotone-Parent: 9e9d09486a04f5adb2e51b0f5aada69a9b053e93
    Monotone-Revision: 2cca525615a367389b1639a5246fbe6d451150c4

    Monotone-Author: markdoliner at pidgin.im
    Monotone-Date: 2012-02-18T23:28:43
    Monotone-Branch: im.pidgin.pidgin.2.x.y
    Monotone-Branch: im.pidgin.pidgin.mxit.2.x.y

Some of these might be useless, and might make sense to strip them,
but they are there now.

In addition to that, I've used 'hg-git'[1] with a few hacks to convert
the repository to mercurial, preserving all the information (except
renames, but that shouldn't be hard to add).

You can find it here:

https://bitbucket.org/felipec/pidgin-clone-hg

The last remaining item in my list is to convert the mtn ids in the
commit messages to the relevant git ids.

You can find the scripts in the usual place:

https://github.com/felipec/pidgin-git-import

In addition to that, I've fixed and cleaned the mercurial scripts
(almost rewrote many of them), so they are now *much* faster and
simpler. I've also made sure that the resulting repository is
*exactly* the same. That is, after applying some updates (I added an
'fc-updates' branch to mark those).

Attached is a condensed patch with all the changes, as Eion Robb
suggested (I guess clean and logical patches are frowned upon).

Since I have not received a single reply after all this work, and the
last real change to pidgin-mtn-conv-files was more than a year ago, my
only guess is that you don't actually want to stop using monotone,
even though you can do it *today*.

Cheers.

[1] http://hg-git.github.com/

diff --git a/.hgignore b/.hgignore
index 2e10ba1..3f1741b 100644
--- a/.hgignore
+++ b/.hgignore
@@ -1,5 +1,4 @@
 syntax: glob
 mtn
 pidgin.mtn*
-svn-patch-authors
 tmpfs
diff --git a/add-committer-certs.py b/add-committer-certs.py
index 106df61..f6ce42b 100755
--- a/add-committer-certs.py
+++ b/add-committer-certs.py
@@ -3,84 +3,51 @@

 import os
 import sys
+import subprocess

 sys.stdout.write("Adding committer certs based on changelog cert signers...")
 sys.stdout.flush()

 db = sys.argv[1]
-key = None
 try:
     key = sys.argv[2]
 except IndexError:
-    pass
+    key = None

-def shellquote(s):
-    return "'" + s.replace("'", "'\\''") + "'"
-mtn = "mtn -d {db} ".format(db=shellquote(db))
+mtn_args = ['mtn', '-d', db]
 if key:
-    mtn = "{mtn} -k {key} ".format(mtn=mtn, key=key)
+    mtn_args += ['-k', key]

 author_map = {}
 with open("authormap", "r") as f:
     for l in f:
-        try:
-            index = l.index("=")
-        except ValueError:
-            continue
-        author = l[:index].strip()
-        name = l[index+1:].strip()
+        author, name = l.rstrip("\n").split(" = ")
         if author and name:
             author_map[author] = name

-keys = {}
-cmd = mtn + "automate keys"
-with os.popen(cmd, "r") as pipe:
-    key_hash = None
-    for l in pipe.readlines():
-        if l.startswith("           hash ["):
-            key_hash = l[17:-2]
-        elif l.startswith("            hash ["):
-            key_hash = l[18:-2]
-        elif l.startswith('     given_name "'):
-            keys[key_hash] = l[17:-2]
-        elif l.startswith('      given_name "'):
-            keys[key_hash] = l[18:-2]
+def mtn_query(db, query):
+    global mtn_args
+    pipe = subprocess.Popen(mtn_args + ['db', 'execute', query],
stdout=subprocess.PIPE)
+    pipe.stdout.readline() # garbage
+    pipe.stdout.readline() # garbage
+    return (line.rstrip('\n').split(' | ') for line in pipe.stdout)

 # Add a "committer" cert for each revision based on the signer of the changelog
 # cert.  This will be picked up by our patched `hg convert`.
-cmd = "{mtn} automate roots ; {mtn} automate descendents `{mtn}
automate roots`".format(mtn=mtn)
-with os.popen(cmd, "r") as pipe:
-    for l in pipe.readlines():
-        revision = l.strip()
-        cmd = "{mtn} automate certs {revision}".format(mtn=mtn,
revision=revision)
-        with os.popen(cmd, "r") as pipe2:
-            key_hash = None
-            signer = None
-            found_author = False
-            author = None
-            for l in pipe2.readlines():
-                if l.startswith("      key ["):
-                    key_hash = l[11:-2]
-                elif l == '     name "changelog"\n':
-                    signer = keys[key_hash]
-                elif l == '     name "author"\n':
-                    found_author = True
-                elif found_author and l.startswith('    value "'):
-                    found_author = False
-                    author = l[11:-2]
-            if signer and not signer.startswith("tailor@"):
-                if not author:
-                    print "{revision} has no author.".format(revision=revision)
-                    continue
-                signer = author_map[signer]
-                try:
-                    author = author_map[author]
-                except KeyError:
-                    print "Missing author: {author}".format(author=author)
-                if signer != author:
-                    cmd = "{mtn} cert {revision} committer {signer}".format(
-                        mtn=mtn, revision=revision,
-                        signer=shellquote(signer))
-                    os.system(cmd)
+for revision, signer, author in mtn_query(db, "select
lower(hex(cc.revision_id)),k.name,ca.value "
+        "from revision_certs cc, revision_certs ca join public_keys k
on k.id = cc.keypair_id "
+        "where cc.revision_id=ca.revision_id and cc.name='changelog'
and ca.name='author' "
+        "group by cc.revision_id"):
+    if signer and not signer.startswith("tailor@"):
+        try:
+            signer = author_map[signer]
+        except KeyError:
+            print "Missing signer: {signer}".format(signer=signer)
+        try:
+            author = author_map[author]
+        except KeyError:
+            print "Missing author: {author}".format(author=author)
+        if signer != author:
+            subprocess.call(mtn_args + ['automate', 'cert', revision,
'committer', signer])

 print "DONE"
diff --git a/authormap b/authormap
index 4f6d3e5..f57ea3f 100644
diff --git a/authormap.TODO b/authormap.TODO
index e554245..d511653 100644
diff --git a/branchmap b/branchmap
index 6f357e1..cc693e7 100644
diff --git a/check-authors-and-committers.py b/check-authors-and-committers.py
index 8ac2bf9..9f27d17 100755
--- a/check-authors-and-committers.py
+++ b/check-authors-and-committers.py
@@ -3,6 +3,7 @@

 import os
 import sys
+import subprocess

 BAD_AUTHORS=(
     "Unknown",
@@ -14,19 +15,11 @@ sys.stdout.write("Looking for bad authors and
committers...")
 sys.stdout.flush()

 db = sys.argv[1]
-def shellquote(s):
-    return "'" + s.replace("'", "'\\''") + "'"
-mtn = "mtn -d {db} ".format(db=shellquote(db))

 author_map = {}
 with open("authormap", "r") as f:
     for l in f:
-        try:
-            index = l.index("=")
-        except ValueError:
-            continue
-        author = l[:index].strip()
-        name = l[index+1:].strip()
+        author, name = l.rstrip("\n").split(" = ")
         if author and name:
             author_map[author] = name

@@ -35,13 +28,6 @@ def check_cert(revision, name, value):
     global author_map
     global first

-    if not value:
-        if name == "author":
-            if first:
-                print ""
-                first = False
-                print "Missing author on: {revision}".format(revision=revision)
-        return
     try:
         value = author_map[value]
     except KeyError:
@@ -53,28 +39,26 @@ def check_cert(revision, name, value):
         print "Bad {name} on {revision}: {value}".format(
             revision=revision, name=name, value=value)

-cmd = "{mtn} automate roots ; {mtn} automate descendents `{mtn}
automate roots`".format(mtn=mtn)
-with os.popen(cmd, "r") as pipe:
-    for l in pipe.readlines():
-        revision = l.strip()
-        cmd = "{mtn} automate certs {revision}".format(mtn=mtn,
revision=revision)
-        with os.popen(cmd, "r") as pipe2:
-            found_author = False
-            author = None
-            found_committer = False
-            committer = None
-            for l in pipe2.readlines():
-                if l == '     name "author"\n':
-                    found_author = True
-                elif l == '     name "committer"\n':
-                    found_committer = True
-                elif found_author and l.startswith('    value "'):
-                    found_author = False
-                    author = l[11:-2]
-                elif found_committer and l.startswith('    value "'):
-                    found_committer = False
-                    committer = l[11:-2]
-            check_cert(revision, "author", author)
-            check_cert(revision, "committer", committer)
+def mtn_query(db, query):
+    pipe = subprocess.Popen(['mtn', '--db', db, 'db', 'execute',
query], stdout=subprocess.PIPE)
+    pipe.stdout.readline() # garbage
+    pipe.stdout.readline() # garbage
+    return (line.rstrip('\n').split(' | ') for line in pipe.stdout)
+
+# find missing authors
+for revision, authors in mtn_query(db, "select
lower(hex(r.id)),sum(c.name == 'author') from revisions r join
revision_certs c on r.id=c.revision_id group by r.id"):
+    if int(authors) == 0:
+        if first:
+            print ""
+            first = False
+        print "Missing author on: {revision}".format(revision=revision)
+
+# find bad authors
+for revision, value in mtn_query(db, "select
lower(hex(revision_id)),value from revision_certs where
name='author'"):
+    check_cert(revision, "author", value)
+
+# find bad committers
+for revision, value in mtn_query(db, "select
lower(hex(revision_id)),value from revision_certs where
name='committer'"):
+    check_cert(revision, "committer", value)

 print "DONE"
diff --git a/fix-branch-certs.sh b/fix-branch-certs.sh
index 77482e3..df7d9ee 100755
--- a/fix-branch-certs.sh
+++ b/fix-branch-certs.sh
@@ -216,6 +216,22 @@ mtn -d $db local kill_certs
fe8468d91b46c3c88ad8f60a6499b16e3fa5f327 branch "im.
 mtn -d $db local kill_certs fe98ce53cdced722cba947379e236ad1fc03adc3
branch "im.pidgin.pidgin.openq"
 mtn -d $db local kill_certs 570b107a62822dd538074753d93b576dea0043a3
branch "im.pidgin.pidgin.next.minor"

+mtn -d $db local kill_certs 2cca525615a367389b1639a5246fbe6d451150c4
branch "im.pidgin.pidgin.mxit.2.x.y"
+mtn -d $db local kill_certs 32a55bbc4f1e8d632d205d040fa3e814559e1c95
branch "im.pidgin.pidgin.mxit"
+mtn -d $db local kill_certs 3a12ece5b629e6de76faec79315514e70ccb32bb
branch "im.pidgin.pidgin.next.minor"
+mtn -d $db local kill_certs 64907e955d5af4c51dbf683f72d3e75a6d52ba46
branch "im.pidgin.pidgin.2.9.0"
+mtn -d $db local kill_certs 65f0e21660895ebae2e934a8d04088a1c57899a6
branch "im.pidgin.pidgin.2.x.y"
+mtn -d $db local kill_certs 7d17d6b03c98b91ec1f90c5f17f7c923973f2e2c
branch "im.pidgin.pidgin.mxit"
+mtn -d $db local kill_certs 8ee22c12acfc2da5d83128948c7cfca17eb54306
branch "im.pidgin.pidgin.next.major"
+mtn -d $db local kill_certs 90563b555003eba18fcf35404c001c70b9f4c184
branch "im.pidgin.pidgin.next.minor"
+mtn -d $db local kill_certs 9fc56c5e4669dbbaa42a495b831982f2732e3895
branch "im.pidgin.pidgin.mxit"
+mtn -d $db local kill_certs c8c73eea7431e6f940916315ace40a41c8da3faa
branch "im.pidgin.pidgin.2.x.y"
+mtn -d $db local kill_certs ddbd0d68045c975cc5673417ad38c8fc65fadad1
branch "im.pidgin.pidgin.next.minor"
+mtn -d $db local kill_certs aad06bbf6f9a5e7fd1f16c72be4af2060e8de4c3
branch "im.pidgin.cpw.sulabh.yahoo"
+mtn -d $db local kill_certs bb41d065e7ff1100b5eb50335111df9b50537753
branch "im.pidgin.pidgin"
+mtn -d $db local kill_certs e09847cb3f7316d9a193184e236421bea704bd4b
branch "im.pidgin.cpw.sulabh.yahoo"
+mtn -d $db local kill_certs f0229545a42bc311f7242e3ab3648395bc8156a8
branch "im.pidgin.soc.2010.detachablepurple"
+
 #odd ipp->remotelogging->ipp situation
 #mtn -d $db local kill_certs 64d3e6a75d2827d3c93ac39eb27408b26dc735ea
branch "im.pidgin.soc.2007.remotelogging"
 #mtn -k $key -d $db cert 64d3e6a75d2827d3c93ac39eb27408b26dc735ea
branch "im.pidgin.pidgin"
diff --git a/fix-commits.sh b/fix-commits.sh
new file mode 100755
index 0000000..de5d0b0
--- /dev/null
+++ b/fix-commits.sh
@@ -0,0 +1,63 @@
+#!/bin/sh -e
+
+db=$1
+key=$2
+
+fix_commit ()
+{
+	if [ "$2" ]; then
+		mtn -d $db local kill_certs $1 author
+		mtn -d $db -k $key automate cert $1 author "$2"
+	fi
+	mtn -d $db local kill_certs $1 changelog
+	mtn -d $db -k $key cert $1 changelog # gets stdin
+}
+
+echo -n "Fixing crappy commits..."
+
+fix_commit "d137c7046bae7e4a0144fee82bfce8061f61e3b3" "Rob Flynn
<gaim at robflynn.com>" <<EOF
+[gaim-migrate @ 9]
+Initial commit
+EOF
+
+fix_commit "84ed68a77e223f83d7891347c70e18519423e96b" "Nathan Walp
<nwalp at pidgin.im>" <<EOF
+[gaim-migrate @ 10836]
+EOF
+
+fix_commit "e0b0f3283559c9583658d47005cbf8a2719e5e45" "Luke Schierer
<lschiere at pidgin.im>" <<EOF
+[gaim-migrate @ 12524]
+EOF
+
+fix_commit "eb43dd9ae1ab74d11ea3cdc685e487b3fc5f48cd" "Daniel Atallah
<datallah at pidgin.im>" <<EOF
+[gaim-migrate @ 11819]
+EOF
+
+fix_commit "c42325d0684bbdde5f0161a049e709c2df6cf137" "Tim Ringenbach
<marv at pidgin.im>" <<EOF
+[gaim-migrate @ 11408]
+EOF
+
+fix_commit "7a10a49bb178320bab4d2f5241609ecdecb68a7d" "Sean Egan
<seanegan at pidgin.im>" <<EOF
+[gaim-migrate @ 3437]
+EOF
+
+fix_commit "26f9fd8304f47257cfe76bd7ea2f989bd2b83f5b" "Mark Doliner
<markdoliner at pidgin.im>" <<EOF
+Change the version from 1.5.1cvs to 1.5.1dev.
+Thanks to Kevin for mentioning this
+EOF
+
+fix_commit "152f6d4a5c3c68d008f93aa52ea166a4ef2cd528" "Mark Doliner
<markdoliner at pidgin.im>" <<EOF
+[gaim-migrate @ 13410]
+Conversion nonsense
+EOF
+
+fix_commit "4f23dae193c4c65a599c972bd9f77e3b68761a5e" "Mark Doliner
<markdoliner at pidgin.im>" <<EOF
+[gaim-migrate @ 13411]
+Conversion nonsense
+EOF
+
+fix_commit "9a5e7fb820bf82d0009c007e3c5146dfd9bda395" "Christian
Hammond <chipx86 at chipx86.com>" <<EOF
+[gaim-migrate @ 3445]
+Conversion nonsense
+EOF
+
+echo DONE
diff --git a/fix-svn-author-certs.py b/fix-svn-author-certs.py
index db348bf..5f52892 100755
--- a/fix-svn-author-certs.py
+++ b/fix-svn-author-certs.py
@@ -3,89 +3,80 @@

 import os
 import sys
+import re
+import subprocess

-sys.stdout.write("Correcting author certs based on svn-patch-authors...")
+sys.stdout.write("Correcting author certs based on svn-authors...")
 sys.stdout.flush()

 db = sys.argv[1]
-key = None
 try:
     key = sys.argv[2]
 except IndexError:
-    pass
+    key = None

-def shellquote(s):
-    return "'" + s.replace("'", "'\\''") + "'"
-mtn = "mtn -d {db} ".format(db=shellquote(db))
+mtn_args = ['mtn', '-d', db]
 if key:
-    mtn = "{mtn} -k {key}".format(mtn=mtn, key=key)
+    mtn_args += ['-k', key]

 author_map = {}
 with open("authormap", "r") as f:
     for l in f:
-        try:
-            index = l.index("=")
-        except ValueError:
-            continue
-        author = l[:index].strip()
-        name = l[index+1:].strip()
+        author, name = l.rstrip("\n").split(" = ")
         if author and name:
             author_map[author.lower()] = name

 svn_map = {}
 with open("svn-revisions", "r") as f:
     for l in f:
-        (svn_revision, mtn_revision) = l.split()
+        svn_revision, mtn_revision = l.split()
         if svn_revision in svn_map:
             svn_map[svn_revision].append(mtn_revision)
         else:
             svn_map[svn_revision] = [mtn_revision]

+def mtn_query(db, query):
+    global mtn_args
+    pipe = subprocess.Popen(mtn_args + ['db', 'execute', query],
stdout=subprocess.PIPE)
+    pipe.stdout.readline() # garbage
+    pipe.stdout.readline() # garbage
+    return (line.rstrip('\n').split(' | ') for line in pipe.stdout)
+
 svn_authormap = {}
-with open("svn-patch-authors", "r") as f:
+with open("svn-authors-map", "r") as f:
+    for l in f:
+        key, value = l.rstrip().split(" = ")
+        svn_authormap[key] = value
+
+with open("svn-authors", "r") as f:
     for l in f:
-        l = l.replace(" # ", " ").strip()
-        index = l.index(" ")
-        revision = l[:index]
-        author = l[index+1:]
-        try:
-            author = author[:author.index("(")].strip()
-        except ValueError:
-            pass
-        revisions = svn_map[revision]
+        revision, author = l.rstrip("\n").split(" ", 1)
+        mark = author[0] == '#'
+        match = re.search('^(# )?(.+?)( \(.+\))?$', author)
+        author = match.group(2)
+        if mark and author in svn_authormap:
+            author = svn_authormap[author]
+        else:
+            if author.find("Unknown ") == 0:
+                author = author[8:]

-        for revision in revisions:
+        for revision in svn_map[revision]:
             existing_author = None
-            cmd = "{mtn} automate certs {revision}".format(mtn=mtn,
revision=revision)
-            with os.popen(cmd, "r") as pipe:
-                found_author = False
-                for l in pipe.readlines():
-                    if l == '     name "author"\n':
-                        found_author = True
-                    elif found_author and l.startswith('    value "'):
-                        found_author = False
-                        existing_author = l[11:-2]
+            for result in mtn_query(db, "select value from
revision_certs where "
+                "name='author' and
revision_id=X'{revision}'".format(revision=revision)):
+                existing_author = result[0]

             try:
                 existing_author = author_map[existing_author.lower()]
             except KeyError:
-                print "Missing author: %s" % existing_author
-            cmd = "{mtn} cert {revision} committer {existing_author}".format(
-                mtn=mtn, revision=revision,
-                existing_author=shellquote(existing_author))
-            os.system(cmd)
+                if not re.match('.*<.*>', existing_author):
+                    print "Missing author: %s" % existing_author

-            cmd = "{mtn} local kill_certs {revision} author".format(
-                mtn=mtn, revision=revision)
-            os.system(cmd)
-
-            try:
-                author = author_map[author.lower()]
-            except KeyError:
+            if not mark:
                 print "Missing author: %s" % author
-            cmd = "{mtn} cert {revision} author {author}".format(
-                mtn=mtn, revision=revision,
-                author=shellquote(author))
-            os.system(cmd)
+
+            subprocess.call(mtn_args + ['automate', 'cert', revision,
'committer', existing_author])
+            subprocess.call(mtn_args + ['local', 'kill_certs',
revision, 'author'])
+            subprocess.call(mtn_args + ['automate', 'cert', revision,
'author', author])

 print "DONE"
diff --git a/migrate.sh b/migrate.sh
index 5a9228f..d1f7ddd 100755
--- a/migrate.sh
+++ b/migrate.sh
@@ -45,6 +45,8 @@ fi
 # this statement out
 export PATH=.:$PATH

+: ${PYTHON:=python}
+
 if [ -d tmpfs ] ; then
 	if ! mount | grep -Fq "`pwd`/tmpfs" ; then
 		sudo mount -t tmpfs tmpfs tmpfs
@@ -109,8 +111,8 @@ for rev in $revisions; do
 done

 # Add some missing author certs.
-mtn -d $db -k $key cert 2d6f9e6fefcb1cc3acf077976fb4563ec6195f82 author N3fr0n
-mtn -d $db -k $key cert e8b2e1e7ac4597ec67db53c64064e2e8e7f3cbc1 author N3fr0n
+mtn -d $db -k $key cert 2d6f9e6fefcb1cc3acf077976fb4563ec6195f82
author "Tomáš Kebert"
+mtn -d $db -k $key cert e8b2e1e7ac4597ec67db53c64064e2e8e7f3cbc1
author "Tomáš Kebert"

 # Deal with revisions that have multiple branch certs
 ./fix-branch-certs.sh $db $key
@@ -124,7 +126,7 @@ fi

 # Add a committer cert with the mapped version of the signer of the changelog.
 # Our patched `hg convert` will append this information to the changelog.
-./add-committer-certs.py $db $key
+$PYTHON ./add-committer-certs.py $db $key

 # This has to be done after adding the committer certs, or that script will
 # use the wrong signer (since the changelog certs are recreated).
@@ -133,18 +135,13 @@ fi
 # For SVN commits of patches, move the author to a committer cert (since these
 # MTN revisions were signed by tailor, which we ignore above) and add the patch
 # writer as the author.
-#
-# wget http://people.freedesktop.org/~felipec/svn-patch-authors \
-#      -O svn-patch-authors.orig
-cp svn-patch-authors.orig svn-patch-authors
-patch -p0 svn-patch-authors svn-patch-authors.diff >/dev/null
-cat svn-patch-authors.gtk1-stable >> svn-patch-authors
-cat svn-patch-authors.missing >> svn-patch-authors
-cat svn-patch-authors.oldstatus >> svn-patch-authors
-./fix-svn-author-certs.py $db $key
+$PYTHON ./fix-svn-author-certs.py $db $key
+
+# Fix crappy commits
+./fix-commits.sh $db $key

 # Alert us of revisions that still need fixing...
-./check-authors-and-committers.py $db
+$PYTHON ./check-authors-and-committers.py $db

 targetrepodir=$destrepo.dir
 rm -rf $targetrepodir
diff --git a/print-svn-authors.py b/print-svn-authors.py
deleted file mode 100755
index 018a1d2..0000000
--- a/print-svn-authors.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/python
-# vim: ai ts=4 sts=4 et sw=4
-
-import os
-import sys
-
-author_map = {}
-with open("authormap", "r") as f:
-    for l in f:
-        try:
-            index = l.index("=")
-        except ValueError:
-            continue
-        author = l[:index].strip()
-        name = l[index+1:].strip()
-        if author and name:
-            author_map[author.lower()] = name
-
-svn_authormap = {}
-with open("svn-patch-authors", "r") as f:
-    for l in f:
-        l = l.replace(" # ", " ").strip()
-        index = l.index(" ")
-        revision = l[:index]
-        author = l[index+1:]
-        try:
-            author = author[:author.index("(")].strip()
-        except ValueError:
-            pass
-        try:
-            author = author_map[author.lower()]
-        except:
-            pass
-        print "{revision} {author}".format(revision=revision, author=author)
diff --git a/split-branch-repos.sh b/split-branch-repos.sh
index 0e88e03..19a0d52 100755
--- a/split-branch-repos.sh
+++ b/split-branch-repos.sh
@@ -18,8 +18,6 @@ hg --cwd $mainrepo strip --no-backup
"min(branch('im.pidgin.www'))"
 hg --cwd $mainrepo strip --no-backup "min(branch('im.pidgin.web.old'))"
 hg --cwd $mainrepo strip --no-backup
"min(branch('im.pidgin.doc.userguide.pidgin'))"
 hg --cwd $mainrepo strip --no-backup
"min(branch('im.pidgin.soc.2009.transport'))"
-# throw away this garbage branch
-hg --cwd $mainrepo strip --no-backup
"min(branch('im.pidgin.soc.2010.logviewer'))"

 branches="aes
 cpw.caseyho.crashreporter
diff --git a/svn-authors b/svn-authors
new file mode 100644
index 0000000..0883b02
diff --git a/svn-authors-map b/svn-authors-map
new file mode 100644
index 0000000..35feaa0
diff --git a/svn-patch-authors.diff b/svn-patch-authors.diff
deleted file mode 100644
index 22b3fa9..0000000
diff --git a/svn-patch-authors.gtk1-stable b/svn-patch-authors.gtk1-stable
deleted file mode 100644
index efa5ca6..0000000
diff --git a/svn-patch-authors.missing b/svn-patch-authors.missing
deleted file mode 100644
index a236967..0000000
diff --git a/svn-patch-authors.oldstatus b/svn-patch-authors.oldstatus
deleted file mode 100644
index 6a445a0..0000000
diff --git a/svn-patch-authors.orig b/svn-patch-authors.orig
deleted file mode 100644
index 475d805..0000000

-- 
Felipe Contreras




More information about the Devel mailing list