{"thread":{"id":"32415","subject":"[PATCH] Python scripts audited for minimum compatible version and checks added.","startedAt":"2012-12-20T14:13:37Z","lastAt":"2012-12-24T19:52:38Z","messageCount":12,"participants":["Eric S. Raymond","Jeff King","Junio C Hamano","Manlio Perillo","Pete Wyckoff"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"205254","messageId":"20121220141855.05DAA44105@snark.thyrsus.com","threadId":"32415","inReplyTo":null,"subject":"[PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Eric S. Raymond","fromEmail":"esr@thyrsus.com","sentAt":"2012-12-20T14:13:37Z","receivedAt":"2012-12-20T14:13:37Z","isPatch":true,"sender":{"key":"esr@thyrsus.com","avatar":"https://avatars.githubusercontent.com/u/727961?v=4"},"body":"Signed-off-by: Eric S. Raymond <esr@thyrsus.com>\n---\n contrib/ciabot/ciabot.py           | 5 +++++\n contrib/fast-import/import-zips.py | 5 +++++\n contrib/hg-to-git/hg-to-git.py     | 5 +++++\n contrib/p4import/git-p4import.py   | 5 +++++\n contrib/svn-fe/svnrdump_sim.py     | 4 ++++\n git-p4.py                          | 5 +++++\n git-remote-testgit.py              | 5 +++++\n git_remote_helpers/git/__init__.py | 4 ++++\n 8 files changed, 38 insertions(+)\n\ndiff --git a/contrib/ciabot/ciabot.py b/contrib/ciabot/ciabot.py\nindex bd24395..b55648f 100755\n--- a/contrib/ciabot/ciabot.py\n+++ b/contrib/ciabot/ciabot.py\n@@ -50,6 +50,11 @@\n import os, sys, commands, socket, urllib\n from xml.sax.saxutils import escape\n \n+if sys.hexversion < 0x02000000:\n+\t# The limiter is the xml.sax module\n+        sys.stderr.write(\"import-zips.py: requires Python 2.0.0 or later.\")\n+        sys.exit(1)\n+\n # Changeset URL prefix for your repo: when the commit ID is appended\n # to this, it should point at a CGI that will display the commit\n # through gitweb or something similar. The defaults will probably\ndiff --git a/contrib/fast-import/import-zips.py b/contrib/fast-import/import-zips.py\nindex 82f5ed3..d9ad71d 100755\n--- a/contrib/fast-import/import-zips.py\n+++ b/contrib/fast-import/import-zips.py\n@@ -13,6 +13,11 @@ from sys import argv, exit\n from time import mktime\n from zipfile import ZipFile\n \n+if sys.hexversion < 0x01060000:\n+\t# The limiter is the zipfile module\n+        sys.stderr.write(\"import-zips.py: requires Python 1.6.0 or later.\")\n+        sys.exit(1)\n+\n if len(argv) < 2:\n \tprint 'Usage:', argv[0], '<zipfile>...'\n \texit(1)\ndiff --git a/contrib/hg-to-git/hg-to-git.py b/contrib/hg-to-git/hg-to-git.py\nindex 046cb2b..9f39ce5 100755\n--- a/contrib/hg-to-git/hg-to-git.py\n+++ b/contrib/hg-to-git/hg-to-git.py\n@@ -23,6 +23,11 @@ import os, os.path, sys\n import tempfile, pickle, getopt\n import re\n \n+if sys.hexversion < 0x02030000:\n+   # The behavior of the pickle module changed significantly in 2.3\n+   sys.stderr.write(\"hg-to-git.py: requires Python 2.3 or later.\")\n+   sys.exit(1)\n+\n # Maps hg version -> git version\n hgvers = {}\n # List of children for each hg revision\ndiff --git a/contrib/p4import/git-p4import.py b/contrib/p4import/git-p4import.py\nindex b6e534b..fb48e2a 100644\n--- a/contrib/p4import/git-p4import.py\n+++ b/contrib/p4import/git-p4import.py\n@@ -14,6 +14,11 @@ import sys\n import time\n import getopt\n \n+if sys.hexversion < 0x02020000:\n+   # The behavior of the marshal module changed significantly in 2.2\n+   sys.stderr.write(\"git-p4import.py: requires Python 2.2 or later.\")\n+   sys.exit(1)\n+\n from signal import signal, \\\n    SIGPIPE, SIGINT, SIG_DFL, \\\n    default_int_handler\ndiff --git a/contrib/svn-fe/svnrdump_sim.py b/contrib/svn-fe/svnrdump_sim.py\nindex 1cfac4a..ed43dbb 100755\n--- a/contrib/svn-fe/svnrdump_sim.py\n+++ b/contrib/svn-fe/svnrdump_sim.py\n@@ -7,6 +7,10 @@ to the highest revision that should be available.\n \"\"\"\n import sys, os\n \n+if sys.hexversion < 0x02040000:\n+\t# The limiter is the ValueError() calls. This may be too conservative\n+        sys.stderr.write(\"svnrdump-sim.py: requires Python 2.4 or later.\")\n+        sys.exit(1)\n \n def getrevlimit():\n         var = 'SVNRMAX'\ndiff --git a/git-p4.py b/git-p4.py\nindex 551aec9..ec060b4 100755\n--- a/git-p4.py\n+++ b/git-p4.py\n@@ -12,6 +12,11 @@ import optparse, sys, os, marshal, subprocess, shelve\n import tempfile, getopt, os.path, time, platform\n import re, shutil\n \n+if sys.hexversion < 0x02040000:\n+    # The limiter is the subprocess module\n+    sys.stderr.write(\"git-p4.py: requires Python 2.4 or later.\")\n+    sys.exit(1)\n+\n verbose = False\n \n # Only labels/tags matching this will be imported/exported\ndiff --git a/git-remote-testgit.py b/git-remote-testgit.py\nindex 5f3ebd2..22d2eb6 100644\n--- a/git-remote-testgit.py\n+++ b/git-remote-testgit.py\n@@ -31,6 +31,11 @@ from git_remote_helpers.git.exporter import GitExporter\n from git_remote_helpers.git.importer import GitImporter\n from git_remote_helpers.git.non_local import NonLocalGit\n \n+if sys.hexversion < 0x01050200:\n+    # os.makedirs() is the limiter\n+    sys.stderr.write(\"git-remote-testgit.py: requires Python 1.5.2 or later.\")\n+    sys.exit(1)\n+\n def get_repo(alias, url):\n     \"\"\"Returns a git repository object initialized for usage.\n     \"\"\"\ndiff --git a/git_remote_helpers/git/__init__.py b/git_remote_helpers/git/__init__.py\nindex e69de29..776e891 100644\n--- a/git_remote_helpers/git/__init__.py\n+++ b/git_remote_helpers/git/__init__.py\n@@ -0,0 +1,4 @@\n+if sys.hexversion < 0x02040000:\n+    # The limiter is the subprocess module\n+    sys.stderr.write(\"git_remote_helpers: requires Python 2.4 or later.\")\n+    sys.exit(1)\n-- \n1.8.1.rc2\n\n\n\n-- \n\t\t<a href=\"http://www.catb.org/~esr/\">Eric S. Raymond</a>\n\n\"The state calls its own violence `law', but that of the individual `crime'\"\n\t-- Max Stirner\n"},{"id":"205256","messageId":"20121220144813.GA27211@sigill.intra.peff.net","threadId":"32415","inReplyTo":"20121220141855.05DAA44105@snark.thyrsus.com","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-12-20T14:48:13Z","receivedAt":"2012-12-20T14:48:13Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Dec 20, 2012 at 09:13:37AM -0500, Eric S. Raymond wrote:\n\n> diff --git a/contrib/ciabot/ciabot.py b/contrib/ciabot/ciabot.py\n> index bd24395..b55648f 100755\n> --- a/contrib/ciabot/ciabot.py\n> +++ b/contrib/ciabot/ciabot.py\n> @@ -50,6 +50,11 @@\n>  import os, sys, commands, socket, urllib\n>  from xml.sax.saxutils import escape\n>  \n> +if sys.hexversion < 0x02000000:\n> +\t# The limiter is the xml.sax module\n> +        sys.stderr.write(\"import-zips.py: requires Python 2.0.0 or later.\")\n> +        sys.exit(1)\n\nShould the error message say ciabot.py?\n\n-Peff\n"},{"id":"205259","messageId":"20121220150252.GA24387@thyrsus.com","threadId":"32415","inReplyTo":"20121220144813.GA27211@sigill.intra.peff.net","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Eric S. Raymond","fromEmail":"esr@thyrsus.com","sentAt":"2012-12-20T15:02:52Z","receivedAt":"2012-12-20T15:02:52Z","isPatch":true,"sender":{"key":"esr@thyrsus.com","avatar":"https://avatars.githubusercontent.com/u/727961?v=4"},"body":"Jeff King <peff@peff.net>:\n> On Thu, Dec 20, 2012 at 09:13:37AM -0500, Eric S. Raymond wrote:\n> \n> > diff --git a/contrib/ciabot/ciabot.py b/contrib/ciabot/ciabot.py\n> > index bd24395..b55648f 100755\n> > --- a/contrib/ciabot/ciabot.py\n> > +++ b/contrib/ciabot/ciabot.py\n> > @@ -50,6 +50,11 @@\n> >  import os, sys, commands, socket, urllib\n> >  from xml.sax.saxutils import escape\n> >  \n> > +if sys.hexversion < 0x02000000:\n> > +\t# The limiter is the xml.sax module\n> > +        sys.stderr.write(\"import-zips.py: requires Python 2.0.0 or later.\")\n> > +        sys.exit(1)\n> \n> Should the error message say ciabot.py?\n> \n> -Peff\n\nGack.  Yes.  Thaty's what I get for cut-and-pasting too quickly.\nThe information about xnml.sex is correct, though.\n\nWant me to resubmit, or will you just patch it?\n\nNote by the way that I still think the entire ciabot subtree (which is \nmy code) should just be nuked.  CIA is not coming back, wishful thinking \non Ilkotech's web page notwithstanding.\n-- \n\t\t<a href=\"http://www.catb.org/~esr/\">Eric S. Raymond</a>\n"},{"id":"205277","messageId":"7vsj7060nj.fsf@alter.siamese.dyndns.org","threadId":"32415","inReplyTo":"20121220150252.GA24387@thyrsus.com","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-12-20T18:25:52Z","receivedAt":"2012-12-20T18:25:52Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Eric S. Raymond\" <esr@thyrsus.com> writes:\n\n>> Should the error message say ciabot.py?\n>> \n>> -Peff\n>\n> Gack.  Yes.  Thaty's what I get for cut-and-pasting too quickly.\n> The information about xnml.sex is correct, though.\n>\n> Want me to resubmit, or will you just patch it?\n\nCan handle it myself; thanks for the patch.\n\n> Note by the way that I still think the entire ciabot subtree (which is \n> my code) should just be nuked.  CIA is not coming back, wishful thinking \n> on Ilkotech's web page notwithstanding.\n\nYou are probably right, and interested people could send a patch to\nresurrect it, if it turns necessary, from our last commit that has\nit.  So let's apply this patch, and then remove the subtree soon\nafter 1.8.1 ships.\n"},{"id":"205316","messageId":"7vk3sc2hx9.fsf@alter.siamese.dyndns.org","threadId":"32415","inReplyTo":"7vsj7060nj.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-12-21T03:38:42Z","receivedAt":"2012-12-21T03:38:42Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"I needed something like this on top of it to get it pass t5800.\n\ndiff --git a/git_remote_helpers/git/__init__.py b/git_remote_helpers/git/__init__.py\nindex 776e891..5047fd4 100644\n--- a/git_remote_helpers/git/__init__.py\n+++ b/git_remote_helpers/git/__init__.py\n@@ -1,3 +1,5 @@\n+import sys\n+\n if sys.hexversion < 0x02040000:\n     # The limiter is the subprocess module\n     sys.stderr.write(\"git_remote_helpers: requires Python 2.4 or later.\")\n-- \n1.8.1.rc2.225.g0e05fff\n"},{"id":"205341","messageId":"50D4873A.6060501@gmail.com","threadId":"32415","inReplyTo":"20121220141855.05DAA44105@snark.thyrsus.com","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Manlio Perillo","fromEmail":"manlio.perillo@gmail.com","sentAt":"2012-12-21T15:58:50Z","receivedAt":"2012-12-21T15:58:50Z","isPatch":true,"sender":{"key":"manlio.perillo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/6217088?v=4"},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nIl 20/12/2012 15:13, Eric S. Raymond ha scritto:\n> Signed-off-by: Eric S. Raymond <esr@thyrsus.com>\n> ---\n\nJust my two cents.\nIsn't it better to have some core Python support inside a \"python/\"\ndirectory in the git source tree (e.g. e simple python/git.py), and have\n*all* python code import that module?\n\nThen you can impose a reasonable version limitation (e.g. Python >= 2.5)\ninside that module (and/or inside its setup.py file).\n\nAnother advantage is that the python/git.py module can contain some very\nbase support for interfacing git plumbing commands, instead of having\nall internal (and external) modules reinventing the wheel.\n\nI'm writing an external command for Git, and I do plan to write such a\npackage, so that I don't have to reimplement all the base support in my\ncommand source code.\n\n\n\nRegards   Manlio\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.10 (GNU/Linux)\nComment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/\n\niEYEARECAAYFAlDUhzoACgkQscQJ24LbaUQFuQCfb6QgkJHdxQSEB7nLXMN8TSmI\n6/IAn3svylllaIBQfZKf0lEzNBtZJQMK\n=Ar20\n-----END PGP SIGNATURE-----\n"},{"id":"205457","messageId":"7vr4mgnj2v.fsf@alter.siamese.dyndns.org","threadId":"32415","inReplyTo":"7vk3sc2hx9.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-12-24T04:57:12Z","receivedAt":"2012-12-24T04:57:12Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> I needed something like this on top of it to get it pass t5800.\n>\n> diff --git a/git_remote_helpers/git/__init__.py b/git_remote_helpers/git/__init__.py\n> index 776e891..5047fd4 100644\n> --- a/git_remote_helpers/git/__init__.py\n> +++ b/git_remote_helpers/git/__init__.py\n> @@ -1,3 +1,5 @@\n> +import sys\n> +\n>  if sys.hexversion < 0x02040000:\n>      # The limiter is the subprocess module\n>      sys.stderr.write(\"git_remote_helpers: requires Python 2.4 or later.\")\n\nPing?  Is the above the best fix for the breakage?\n\nIf it weren't __init__, I'd silently squash it in, but the filename\nfeels a bit more magic than the ordinary *.py files, so I was worried\nthere may be some other rules involved what can and cannot go in to\nsuch a file, hence I've been waiting for an ack or alternatives.\n\nThanks.\n"},{"id":"205458","messageId":"20121224052150.GA24686@thyrsus.com","threadId":"32415","inReplyTo":"7vr4mgnj2v.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Eric S. Raymond","fromEmail":"esr@thyrsus.com","sentAt":"2012-12-24T05:21:50Z","receivedAt":"2012-12-24T05:21:50Z","isPatch":true,"sender":{"key":"esr@thyrsus.com","avatar":"https://avatars.githubusercontent.com/u/727961?v=4"},"body":"Junio C Hamano <gitster@pobox.com>:\n> Junio C Hamano <gitster@pobox.com> writes:\n> \n> > I needed something like this on top of it to get it pass t5800.\n> >\n> > diff --git a/git_remote_helpers/git/__init__.py b/git_remote_helpers/git/__init__.py\n> > index 776e891..5047fd4 100644\n> > --- a/git_remote_helpers/git/__init__.py\n> > +++ b/git_remote_helpers/git/__init__.py\n> > @@ -1,3 +1,5 @@\n> > +import sys\n> > +\n> >  if sys.hexversion < 0x02040000:\n> >      # The limiter is the subprocess module\n> >      sys.stderr.write(\"git_remote_helpers: requires Python 2.4 or later.\")\n> \n> Ping?  Is the above the best fix for the breakage?\n\nSorry, I missed this the first time around.  Yes, I think it is.\n \n> If it weren't __init__, I'd silently squash it in, but the filename\n> feels a bit more magic than the ordinary *.py files, so I was worried\n> there may be some other rules involved what can and cannot go in to\n> such a file, hence I've been waiting for an ack or alternatives.\n\nNope, no special rules.\n-- \n\t\t<a href=\"http://www.catb.org/~esr/\">Eric S. Raymond</a>\n"},{"id":"205469","messageId":"20121224133649.GA1400@padd.com","threadId":"32415","inReplyTo":"20121220141855.05DAA44105@snark.thyrsus.com","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Pete Wyckoff","fromEmail":"pw@padd.com","sentAt":"2012-12-24T13:36:49Z","receivedAt":"2012-12-24T13:36:49Z","isPatch":true,"sender":{"key":"pw@padd.com","avatar":null},"body":"esr@thyrsus.com wrote on Thu, 20 Dec 2012 09:13 -0500:\n> diff --git a/git-p4.py b/git-p4.py\n> index 551aec9..ec060b4 100755\n> --- a/git-p4.py\n> +++ b/git-p4.py\n> @@ -12,6 +12,11 @@ import optparse, sys, os, marshal, subprocess, shelve\n>  import tempfile, getopt, os.path, time, platform\n>  import re, shutil\n>  \n> +if sys.hexversion < 0x02040000:\n> +    # The limiter is the subprocess module\n> +    sys.stderr.write(\"git-p4.py: requires Python 2.4 or later.\")\n> +    sys.exit(1)\n> +\n>  verbose = False\n\nIf 2.3 does not have the subprocess module, this script will fail\nat the import, and not run your version test.\n\nAll the uses of sys.stderr.write() should probably include a\nnewline.  Presumably you used write instead of print to avoid\n2to3 differences.\n\nThe name of this particular script, as users would type it, is\n\"git p4\"; no dash and no \".py\".\n\nMany of your changes have these three problems; I just picked on\nmy favorite one.\n\n> diff --git a/git-remote-testgit.py b/git-remote-testgit.py\n> index 5f3ebd2..22d2eb6 100644\n> --- a/git-remote-testgit.py\n> +++ b/git-remote-testgit.py\n> @@ -31,6 +31,11 @@ from git_remote_helpers.git.exporter import GitExporter\n>  from git_remote_helpers.git.importer import GitImporter\n>  from git_remote_helpers.git.non_local import NonLocalGit\n>  \n> +if sys.hexversion < 0x01050200:\n> +    # os.makedirs() is the limiter\n> +    sys.stderr.write(\"git-remote-testgit.py: requires Python 1.5.2 or later.\")\n> +    sys.exit(1)\n> +\n\nThis one, though, is a bit of a lie because git_remote_helpers\nneeds 2.4, and you add that version enforcement in the library.\n\nI assume what you're trying to do here is to make the\nversion-related failures more explicit, rather than have users\nparse an ImportError traceback, e.g.  That seems somewhat useful\nfor people with ancient installs.\n\nBut what about the high-end of the version range?  I'm pretty\nsure most of these scripts will throw syntax errors on >= 3.0,\nhow should we catch that before users see it?\n\n\t\t-- Pete\n"},{"id":"205473","messageId":"20121224153257.GA28213@thyrsus.com","threadId":"32415","inReplyTo":"20121224133649.GA1400@padd.com","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Eric S. Raymond","fromEmail":"esr@thyrsus.com","sentAt":"2012-12-24T15:32:57Z","receivedAt":"2012-12-24T15:32:57Z","isPatch":true,"sender":{"key":"esr@thyrsus.com","avatar":"https://avatars.githubusercontent.com/u/727961?v=4"},"body":"Pete Wyckoff <pw@padd.com>:\n> esr@thyrsus.com wrote on Thu, 20 Dec 2012 09:13 -0500:\n> > diff --git a/git-p4.py b/git-p4.py\n> > index 551aec9..ec060b4 100755\n> > --- a/git-p4.py\n> > +++ b/git-p4.py\n> > @@ -12,6 +12,11 @@ import optparse, sys, os, marshal, subprocess, shelve\n> >  import tempfile, getopt, os.path, time, platform\n> >  import re, shutil\n> >  \n> > +if sys.hexversion < 0x02040000:\n> > +    # The limiter is the subprocess module\n> > +    sys.stderr.write(\"git-p4.py: requires Python 2.4 or later.\")\n> > +    sys.exit(1)\n> > +\n> >  verbose = False\n> \n> If 2.3 does not have the subprocess module, this script will fail\n> at the import, and not run your version test.\n\nYes, the import of subprocess should move to after the check.\n\n> All the uses of sys.stderr.write() should probably include a\n> newline.  Presumably you used write instead of print to avoid\n> 2to3 differences.\n\nThat is correct.\n \n> The name of this particular script, as users would type it, is\n> \"git p4\"; no dash and no \".py\".\n> \n> Many of your changes have these three problems; I just picked on\n> my favorite one.\n\nShould I resubmit, or do you intend to fix these while merging?\n \n> > diff --git a/git-remote-testgit.py b/git-remote-testgit.py\n> > index 5f3ebd2..22d2eb6 100644\n> > --- a/git-remote-testgit.py\n> > +++ b/git-remote-testgit.py\n> > @@ -31,6 +31,11 @@ from git_remote_helpers.git.exporter import GitExporter\n> >  from git_remote_helpers.git.importer import GitImporter\n> >  from git_remote_helpers.git.non_local import NonLocalGit\n> >  \n> > +if sys.hexversion < 0x01050200:\n> > +    # os.makedirs() is the limiter\n> > +    sys.stderr.write(\"git-remote-testgit.py: requires Python 1.5.2 or later.\")\n> > +    sys.exit(1)\n> > +\n> \n> This one, though, is a bit of a lie because git_remote_helpers\n> needs 2.4, and you add that version enforcement in the library.\n\nAgreed. The goal here was simply to have the depedencies of the individual\nscripts be clearly documented, and establish a practice for future\nsubmitters to emulate.\n\n> I assume what you're trying to do here is to make the\n> version-related failures more explicit, rather than have users\n> parse an ImportError traceback, e.g.\n\nSee above.  At least half the point is making our dependencies\nexplicit rather than implicit, so we can make better policy\ndecisions.\n\n> But what about the high-end of the version range?  I'm pretty\n> sure most of these scripts will throw syntax errors on >= 3.0,\n> how should we catch that before users see it?\n\nThat's a problem for another day, when 3.x is more widely deployed.\nI'd be willing to run 2to3 on these scripts and check forward \ncompatibility.\n-- \n\t\t<a href=\"http://www.catb.org/~esr/\">Eric S. Raymond</a>\n"},{"id":"205477","messageId":"7v7go7nu1f.fsf@alter.siamese.dyndns.org","threadId":"32415","inReplyTo":"20121224153257.GA28213@thyrsus.com","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-12-24T19:12:44Z","receivedAt":"2012-12-24T19:12:44Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Eric S. Raymond\" <esr@thyrsus.com> writes:\n\n> Pete Wyckoff <pw@padd.com>:\n>> esr@thyrsus.com wrote on Thu, 20 Dec 2012 09:13 -0500:\n>>  ...\n>> Many of your changes have these three problems; I just picked on\n>> my favorite one.\n>\n> Should I resubmit, or do you intend to fix these while merging?\n\nI'd appreciate a re-roll, perhaps in a few days after the dust\nsettles.\n\nThanks, both, for the patch and the review.\n"},{"id":"205478","messageId":"20121224195238.GA29663@thyrsus.com","threadId":"32415","inReplyTo":"7v7go7nu1f.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] Python scripts audited for minimum compatible version and checks added.","fromName":"Eric S. Raymond","fromEmail":"esr@thyrsus.com","sentAt":"2012-12-24T19:52:38Z","receivedAt":"2012-12-24T19:52:38Z","isPatch":true,"sender":{"key":"esr@thyrsus.com","avatar":"https://avatars.githubusercontent.com/u/727961?v=4"},"body":"Junio C Hamano <gitster@pobox.com>:\n> > Should I resubmit, or do you intend to fix these while merging?\n> \n> I'd appreciate a re-roll, perhaps in a few days after the dust\n> settles.\n\nYou'll get it.\n\nIt will take a little longer than it otherwise might have because I'm\nin the middle of straightening out the mess around cvsps and git-cvsimport,\nwhich is deeper and nastier than I realized.\n\nIt turns out that one of the options git-cvsimport depends on, -A, has\nbeen broken (leading to incorrect conversions of branchy repos) since\n2006 if not earlier; I'm removing it outright.\n\nThus, the version of git-cvsimport in the git-tree will die with an\nerror calling cvsps 3.x - but since what it was doing before was actually\nmangling users' repositories this is no great loss.\n\nI'm going to have to shoot the existing implementation of\ngit-cvsimport through the head and rewrite it. This won't be\ndifficult; I already have a proof-of-concept in 126 lines of Python,\nwhich is a big improvement over the 1179 lines of Perl in the existing\nversion.  Most of the vanished bulk is CVS client code for fetching\nlogs and files, which is now done better and faster inside cvsps.\n-- \n\t\t<a href=\"http://www.catb.org/~esr/\">Eric S. Raymond</a>\n"}]}