{"thread":{"id":"15398","subject":"[StGit PATCH] add option to import series directly from a tar archive","startedAt":"2008-09-07T03:47:19Z","lastAt":"2008-09-12T15:44:47Z","messageCount":10,"participants":["Clark Williams","Karl Hasselström","Samuel Tardieu"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"89940","messageId":"48C34EC7.9040102@gmail.com","threadId":"15398","inReplyTo":null,"subject":"[StGit PATCH] add option to import series directly from a tar archive","fromName":"Clark Williams","fromEmail":"clark.williams@gmail.com","sentAt":"2008-09-07T03:47:19Z","receivedAt":"2008-09-07T03:47:19Z","isPatch":true,"sender":{"key":"clark.williams@gmail.com","avatar":null},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nCatalin/Karl,\n\nAttached is my first cut at adding the ability to import a patch series by specifying\nthe tarball. For example, the following command:\n\n\t$ stg import --tarfile patch-2.6.26.3-rt6.bz2\n\nwill apply the latest -rt patch series to your current kernel tree.\n\nNo Karl, I haven't developed a test for it (yet).  I wanted to see what you guys\nthought first :)\n\nClark\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.9 (GNU/Linux)\nComment: Using GnuPG with Fedora - http://enigmail.mozdev.org\n\niEYEARECAAYFAkjDTscACgkQqA4JVb61b9dNRgCZAW+tOCgz5Y+A0IdomcOA4X7v\nu8MAnRvFWMXRJ0Kxv1rAnBRnheq6Iidi\n=W7Dl\n-----END PGP SIGNATURE-----\n\n\npatch to allow importing a series from a tar archive\n\nFrom: Clark Williams <williams@redhat.com>\n\nSigned-off-by: Clark Williams <williams@redhat.com>\n---\n stgit/commands/imprt.py |   46 +++++++++++++++++++++++++++++++++++++++++++++-\n 1 files changed, 45 insertions(+), 1 deletions(-)\n\ndiff --git a/stgit/commands/imprt.py b/stgit/commands/imprt.py\nindex 227743f..0e9bb73 100644\n--- a/stgit/commands/imprt.py\n+++ b/stgit/commands/imprt.py\n@@ -87,7 +87,10 @@ options = [make_option('-m', '--mail',\n            make_option('--commname',\n                        help = 'use COMMNAME as the committer name'),\n            make_option('--commemail',\n-                       help = 'use COMMEMAIL as the committer e-mail')\n+                       help = 'use COMMEMAIL as the committer e-mail'),\n+           make_option('--tarfile',\n+                       help = 'import a series from a tar archive',\n+                       action = \"store_true\"),\n            ] + make_sign_options()\n \n \n@@ -287,6 +290,45 @@ def __import_url(url, options):\n     urllib.urlretrieve(url, filename)\n     __import_file(filename, options)\n \n+def __import_tarfile(tar, options):\n+    \"\"\"Import patch series from a tar archive\n+    \"\"\"\n+    import tarfile\n+    import tempfile\n+\n+    if not tarfile.is_tarfile(tar):\n+        raise CmdException, \"%s is not a tarfile!\" % tar\n+\n+\n+    t = tarfile.open(tar, 'r')\n+    names = t.getnames()\n+\n+    # verify paths in the tarfile are safe\n+    for n in names:\n+        if n.startswith('/'):\n+            raise CmdException, \"Absolute path found in %s\" % tar\n+        if n.startswith(\"../\"):\n+            raise CmdException, \"Relative path found in %s\" % tar\n+\n+    # find the series file\n+    seriesfile = '';\n+    for m in names:\n+        if m.endswith('/series') or m == 'series':\n+            seriesfile = m\n+            break\n+    if seriesfile == '':\n+        raise CmdException, \"no series file found in %s\" % tar\n+\n+    # unpack into a tmp dir\n+    tmpdir = tempfile.mkdtemp('.stg')\n+    t.extractall(tmpdir)\n+\n+    # apply the series\n+    __import_series(os.path.join(tmpdir, seriesfile), options)\n+\n+    # cleanup the tmpdir\n+    os.system('rm -rf %s' % tmpdir)\n+\n def func(parser, options, args):\n     \"\"\"Import a GNU diff file as a new patch\n     \"\"\"\n@@ -308,6 +350,8 @@ def func(parser, options, args):\n         __import_mbox(filename, options)\n     elif options.url:\n         __import_url(filename, options)\n+    elif options.tarfile:\n+        __import_tarfile(filename, options)\n     else:\n         __import_file(filename, options)\n \n"},{"id":"90107","messageId":"20080908180317.GA6123@diana.vm.bytemark.co.uk","threadId":"15398","inReplyTo":"48C34EC7.9040102@gmail.com","subject":"Re: [StGit PATCH] add option to import series directly from a tar archive","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2008-09-08T18:03:17Z","receivedAt":"2008-09-08T18:03:17Z","isPatch":true,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"On 2008-09-06 22:47:19 -0500, Clark Williams wrote:\n\n> Attached is my first cut at adding the ability to import a patch\n> series by specifying the tarball.\n\nThanks!\n\n> No Karl, I haven't developed a test for it (yet). I wanted to see\n> what you guys thought first :)\n\nI don't see a problem with it, and if you took the time to code it\nthere is obviously at least one user (I have no idea how common patch\nseries tarballs are). I do have some comments below, but nothing that\nwould prevent you from writing a test or two right away. ;-)\n\n> +           make_option('--tarfile',\n> +                       help = 'import a series from a tar archive',\n> +                       action = \"store_true\"),\n\nAs I hint below, you might want to autodetect tarballs with --series\ninstead, since a tarball is just a tarred series directory.\n\n> +        if n.startswith(\"../\"):\n> +            raise CmdException, \"Relative path found in %s\" % tar\n\nI guess any occurrence of /../ in the middle of n should be caught as\nwell? Or can't that happen?\n\nBy the way, is the separator always '/' in tarfile? Or should you use\nos.sep? (There is also os.pardir which you could use instead of '..',\nbut that might be overdoing it a little ...)\n\n> +        raise CmdException, \"no series file found in %s\" % tar\n\nPerhaps \"no 'series' file ...\", to make it clear what the name should\nbe?\n\n> +    # unpack into a tmp dir\n> +    tmpdir = tempfile.mkdtemp('.stg')\n> +    t.extractall(tmpdir)\n> +\n> +    # apply the series\n> +    __import_series(os.path.join(tmpdir, seriesfile), options)\n\nHmm. It seems like such a waste to go via the file system here, when\ntarfile has such nice file extraction methods.\n\nWhat you could do is something like this:\n\n  1. Make two small classes with the same interface, one backed by a\n     tarfile and one backed by a directory, that have two methods:\n     get_series() and get_file(filename). Both methods return\n     file-like objects (created by either open() or\n     tarfile.extractfile()).\n\n  2. Change __import_series() to use objects of this class rather than\n     a directory directly -- starting with creating an instance of one\n     or the other depending on tarfile.is_tarfile(). This will involve\n     teaching __import_file to accept a file-like object instead of\n     just a file name, but that's a one-liner.\n\n  3. Drop the --tarfile flag, since you've just taught the --series\n     flag to handle tarballs!\n\nThat said, if you don't feel like doing it the hard way, I won't\ninsist. The way you coded it is in no way bad (in particular, you\nchose the right function to create a temp dir).\n\n> +    # cleanup the tmpdir\n> +    os.system('rm -rf %s' % tmpdir)\n\nAaah! My eyes! My _eyes_!!!!!\n\nSeriously, though, you'd want to use something like shutil.rmtree\nhere.\n\n-- \nKarl Hasselström, kha@treskal.com\n      www.treskal.com/kalle\n"},{"id":"90114","messageId":"48C56AD9.6040007@gmail.com","threadId":"15398","inReplyTo":"20080908180317.GA6123@diana.vm.bytemark.co.uk","subject":"Re: [StGit PATCH] add option to import series directly from a tar archive","fromName":"Clark Williams","fromEmail":"clark.williams@gmail.com","sentAt":"2008-09-08T18:11:37Z","receivedAt":"2008-09-08T18:11:37Z","isPatch":true,"sender":{"key":"clark.williams@gmail.com","avatar":null},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nKarl Hasselström wrote:\n> On 2008-09-06 22:47:19 -0500, Clark Williams wrote:\n> \n>> Attached is my first cut at adding the ability to import a patch\n>> series by specifying the tarball.\n> \n> Thanks!\n> \n>> No Karl, I haven't developed a test for it (yet). I wanted to see\n>> what you guys thought first :)\n> \n> I don't see a problem with it, and if you took the time to code it\n> there is obviously at least one user (I have no idea how common patch\n> series tarballs are). I do have some comments below, but nothing that\n> would prevent you from writing a test or two right away. ;-)\n> \n\nPatch series tarballs are quite common from people who use quilt (e.g. many of the\nkernel -rt series developers). My biggest problem (now that I can directly import\nthem) is to see if I can ease StGit's patch import rules a bit, since quilt accepts\npretty much anything as long as there's a diff in there somewhere. I bomb out\nregularly importing the -rt series using StGit, because some people don't put\ncomplete email addresses in their patches.\n\nAs to the test, I'll get right on that...:)\n\n>> +           make_option('--tarfile',\n>> +                       help = 'import a series from a tar archive',\n>> +                       action = \"store_true\"),\n> \n> As I hint below, you might want to autodetect tarballs with --series\n> instead, since a tarball is just a tarred series directory.\n\nYeah I thought about that, as well as auto-detecting it in the file case. I'll look\ninto that a bit more.\n\n> \n>> +        if n.startswith(\"../\"):\n>> +            raise CmdException, \"Relative path found in %s\" % tar\n> \n> I guess any occurrence of /../ in the middle of n should be caught as\n> well? Or can't that happen?\n> \n\nHence the \"would you guys look at this?\". Yeah, I need to detect sneaky stuff like\nthat too.\n\n\n> By the way, is the separator always '/' in tarfile? Or should you use\n> os.sep? (There is also os.pardir which you could use instead of '..',\n> but that might be overdoing it a little ...)\n\nI doubt there are many Windows-generated tarballs out there (except for the Cygwin\ncase; I believe they use '/'), but I shouldn't be so Unix-centric. I'll work on\ncleaning it up.\n\nI did consider adding Zipfile support as well, but didn't get a very good match-up\nbetween tar functionality and zip functionality. Maybe later...\n\n> \n>> +        raise CmdException, \"no series file found in %s\" % tar\n> \n> Perhaps \"no 'series' file ...\", to make it clear what the name should\n> be?\n> \n\nYeah, that makes sense.\n\n>> +    # unpack into a tmp dir\n>> +    tmpdir = tempfile.mkdtemp('.stg')\n>> +    t.extractall(tmpdir)\n>> +\n>> +    # apply the series\n>> +    __import_series(os.path.join(tmpdir, seriesfile), options)\n> \n> Hmm. It seems like such a waste to go via the file system here, when\n> tarfile has such nice file extraction methods.\n> \n> What you could do is something like this:\n> \n>   1. Make two small classes with the same interface, one backed by a\n>      tarfile and one backed by a directory, that have two methods:\n>      get_series() and get_file(filename). Both methods return\n>      file-like objects (created by either open() or\n>      tarfile.extractfile()).\n> \n>   2. Change __import_series() to use objects of this class rather than\n>      a directory directly -- starting with creating an instance of one\n>      or the other depending on tarfile.is_tarfile(). This will involve\n>      teaching __import_file to accept a file-like object instead of\n>      just a file name, but that's a one-liner.\n> \n>   3. Drop the --tarfile flag, since you've just taught the --series\n>      flag to handle tarballs!\n> \n> That said, if you don't feel like doing it the hard way, I won't\n> insist. The way you coded it is in no way bad (in particular, you\n> chose the right function to create a temp dir).\n\nI did consider pulling directly from the tarball. I'll look into it.\n\n> \n>> +    # cleanup the tmpdir\n>> +    os.system('rm -rf %s' % tmpdir)\n> \n> Aaah! My eyes! My _eyes_!!!!!\n> \n> Seriously, though, you'd want to use something like shutil.rmtree\n> here.\n> \n\nMan, I could not for the life of me remember which module had that in it. To be fair\nI wasn't up at work with my Python Essential Reference, which would have pointed me\ndirectly at it, but I would have thought I could have gotten there through the Python\ndocs. Sigh...\n\nYou can dock my StGit pay for the visit to the eye doctor :)\n\nClark\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.9 (GNU/Linux)\nComment: Using GnuPG with Fedora - http://enigmail.mozdev.org\n\niEYEARECAAYFAkjFatgACgkQqA4JVb61b9fMRQCeLfK0zhPNEq3t5M4HW+vbRtaG\nVhgAn0rtszqVLbd1bz12MS0b/3r0OkT2\n=gkf1\n-----END PGP SIGNATURE-----\n"},{"id":"90132","messageId":"20080908212257.GA9924@diana.vm.bytemark.co.uk","threadId":"15398","inReplyTo":"48C56AD9.6040007@gmail.com","subject":"Re: [StGit PATCH] add option to import series directly from a tar archive","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2008-09-08T21:22:57Z","receivedAt":"2008-09-08T21:22:57Z","isPatch":true,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"On 2008-09-08 13:11:37 -0500, Clark Williams wrote:\n\n> Patch series tarballs are quite common from people who use quilt\n> (e.g. many of the kernel -rt series developers).\n\nAh.\n\n> My biggest problem (now that I can directly import them) is to see\n> if I can ease StGit's patch import rules a bit, since quilt accepts\n> pretty much anything as long as there's a diff in there somewhere. I\n> bomb out regularly importing the -rt series using StGit, because\n> some people don't put complete email addresses in their patches.\n\nYes, that would be a welcome addition.\n\n> As to the test, I'll get right on that...:)\n\nSwell!\n\n> Karl Hasselström wrote:\n>\n> > By the way, is the separator always '/' in tarfile? Or should you\n> > use os.sep? (There is also os.pardir which you could use instead\n> > of '..', but that might be overdoing it a little ...)\n>\n> I doubt there are many Windows-generated tarballs out there (except\n> for the Cygwin case; I believe they use '/'), but I shouldn't be so\n> Unix-centric. I'll work on cleaning it up.\n\nWell, it's no big deal, really. Just thought I'd mention it.\n\n> I did consider adding Zipfile support as well, but didn't get a very\n> good match-up between tar functionality and zip functionality. Maybe\n> later...\n\nI had a quick look at the zipfile module, and it looks like it too\ncould easily be wrapped in a small class like I suggested in point\n(1).\n\n> I did consider pulling directly from the tarball. I'll look into it.\n\nJust don't let my suggestions take all the fun out of contributing ...\nonly do it my way if you really think it's better.\n\n> > On 2008-09-06 22:47:19 -0500, Clark Williams wrote:\n> >\n> > > +    # cleanup the tmpdir\n> > > +    os.system('rm -rf %s' % tmpdir)\n> >\n> > Aaah! My eyes! My _eyes_!!!!!\n> >\n> > Seriously, though, you'd want to use something like shutil.rmtree\n> > here.\n>\n> Man, I could not for the life of me remember which module had that\n> in it. To be fair I wasn't up at work with my Python Essential\n> Reference, which would have pointed me directly at it, but I would\n> have thought I could have gotten there through the Python docs.\n> Sigh...\n>\n> You can dock my StGit pay for the visit to the eye doctor :)\n\n:-)\n\n-- \nKarl Hasselström, kha@treskal.com\n      www.treskal.com/kalle\n"},{"id":"90547","messageId":"2008-09-12-14-21-13+trackit+sam@rfc1149.net","threadId":"15398","inReplyTo":"48C56AD9.6040007@gmail.com","subject":"Re: [StGit PATCH] add option to import series directly from a tar archive","fromName":"Samuel Tardieu","fromEmail":"sam@rfc1149.net","sentAt":"2008-09-12T12:21:13Z","receivedAt":"2008-09-12T12:21:13Z","isPatch":true,"sender":{"key":"sam@rfc1149.net","avatar":"https://avatars.githubusercontent.com/u/44656?v=4"},"body":">>>>> \"Clark\" == Clark Williams <clark.williams@gmail.com> writes:\n\nClark> [...] is to see if I can ease StGit's patch\nClark> import rules a bit, since quilt accepts pretty much anything as\nClark> long as there's a diff in there somewhere. I bomb out regularly\nClark> importing the -rt series using StGit, because some people don't\nClark> put complete email addresses in their patches.\n\nTwo things that would be great would be:\n\n  - to be able to import patches with \"-p0\" (people not using git\n    often sends such patches)\n\n  - to be able to find where the patch should be applied; I sometimes\n    receive patches for GCC directory \"gcc/ada/\", diffed from there,\n    and if StGit could see that the patch only makes sense there and\n    not at the top-level it would be great as well\n\n Sam\n-- \nSamuel Tardieu -- sam@rfc1149.net -- http://www.rfc1149.net/\n"},{"id":"90554","messageId":"48CA674B.9080900@gmail.com","threadId":"15398","inReplyTo":"2008-09-12-14-21-13+trackit+sam@rfc1149.net","subject":"Re: [StGit PATCH] add option to import series directly from a tar archive","fromName":"Clark Williams","fromEmail":"clark.williams@gmail.com","sentAt":"2008-09-12T12:57:47Z","receivedAt":"2008-09-12T12:57:47Z","isPatch":true,"sender":{"key":"clark.williams@gmail.com","avatar":null},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nSamuel Tardieu wrote:\n>>>>>> \"Clark\" == Clark Williams <clark.williams@gmail.com> writes:\n> \n> Clark> [...] is to see if I can ease StGit's patch\n> Clark> import rules a bit, since quilt accepts pretty much anything as\n> Clark> long as there's a diff in there somewhere. I bomb out regularly\n> Clark> importing the -rt series using StGit, because some people don't\n> Clark> put complete email addresses in their patches.\n> \n> Two things that would be great would be:\n> \n>   - to be able to import patches with \"-p0\" (people not using git\n>     often sends such patches)\n\nI'm not sure how easy this is going to be. It looks like the patch is applied with\n'git --apply' from the file stgit/git.py:apply_patch(). The default '-p' value is 1,\nso we'd have to figure out how to pass the 0 along and then get it into the\napply_patch() function.\n\n> \n>   - to be able to find where the patch should be applied; I sometimes\n>     receive patches for GCC directory \"gcc/ada/\", diffed from there,\n>     and if StGit could see that the patch only makes sense there and\n>     not at the top-level it would be great as well\n> \n\nZowie, I thought I only had to worry about folks sending patches with incomplete\ninformation. So you get patches to the ada compiler that are rooted in gcc/ada (e.g.\npatch in tarball says \"./ChangeLog\", instead of gcc/ada/ChangeLog) rather than at a\ntop level? Only way I could see to deal with that would be to try and pass in the\nappropriate prefix from the command line.\n\nMy current plans are to clean up the first cut at the tarfile logic, then write a\ntest to keep Karl happy, then try to come up with a way to deal with importing\npatches that don't have complete email addresses, no descriptions, etc. Once I get\nthrough that, I'll see if we can deal with weirdly rooted patch series.\n\nClark\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.9 (GNU/Linux)\nComment: Using GnuPG with Fedora - http://enigmail.mozdev.org\n\niEYEARECAAYFAkjKZ0sACgkQqA4JVb61b9eg2ACffDv+FXsL1NifMvxr1tbO2c3s\nHc4AoJPb/RZJrpqT6QybeZrj8rNFJg1y\n=ccj/\n-----END PGP SIGNATURE-----\n"},{"id":"90550","messageId":"20080912130703.GA31240@diana.vm.bytemark.co.uk","threadId":"15398","inReplyTo":"2008-09-12-14-21-13+trackit+sam@rfc1149.net","subject":"Re: [StGit PATCH] add option to import series directly from a tar archive","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2008-09-12T13:07:03Z","receivedAt":"2008-09-12T13:07:03Z","isPatch":true,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"On 2008-09-12 14:21:13 +0200, Samuel Tardieu wrote:\n\n> Two things that would be great would be:\n>\n>   - to be able to import patches with \"-p0\" (people not using git\n>     often sends such patches)\n\nThis should be trivial to implement, since git-apply (pardon the dash)\nhas a -p flag with precisely this meaning.\n\n>   - to be able to find where the patch should be applied; I\n>     sometimes receive patches for GCC directory \"gcc/ada/\", diffed\n>     from there, and if StGit could see that the patch only makes\n>     sense there and not at the top-level it would be great as well\n\nI don't believe git-apply can do this (please correct me if I'm\nwrong), and the right way to teach StGit to do it would arguably be to\nteach it to git-apply and then make StGit use it. It'd be _possible_\nto do it directly in StGit, but it wouldn't be quite the right level,\nand git users wouldn't benefit.\n\n-- \nKarl Hasselström, kha@treskal.com\n      www.treskal.com/kalle\n"},{"id":"90551","messageId":"20080912130834.GB31240@diana.vm.bytemark.co.uk","threadId":"15398","inReplyTo":"20080912130703.GA31240@diana.vm.bytemark.co.uk","subject":"Re: [StGit PATCH] add option to import series directly from a tar archive","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2008-09-12T13:08:34Z","receivedAt":"2008-09-12T13:08:34Z","isPatch":true,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"On 2008-09-12 15:07:03 +0200, Karl Hasselström wrote:\n\n> On 2008-09-12 14:21:13 +0200, Samuel Tardieu wrote:\n>\n> >   - to be able to find where the patch should be applied; I\n> >     sometimes receive patches for GCC directory \"gcc/ada/\", diffed\n> >     from there, and if StGit could see that the patch only makes\n> >     sense there and not at the top-level it would be great as well\n>\n> I don't believe git-apply can do this (please correct me if I'm\n> wrong)\n\nIt does have a --directory flag, but that requires the user to specify\nthe path manually.\n\n-- \nKarl Hasselström, kha@treskal.com\n      www.treskal.com/kalle\n"},{"id":"90557","messageId":"2008-09-12-15-59-45+trackit+sam@rfc1149.net","threadId":"15398","inReplyTo":"48CA674B.9080900@gmail.com","subject":"Re: [StGit PATCH] add option to import series directly from a tar archive","fromName":"Samuel Tardieu","fromEmail":"sam@rfc1149.net","sentAt":"2008-09-12T13:59:45Z","receivedAt":"2008-09-12T13:59:45Z","isPatch":true,"sender":{"key":"sam@rfc1149.net","avatar":"https://avatars.githubusercontent.com/u/44656?v=4"},"body":">>>>> \"Clark\" == Clark Williams <clark.williams@gmail.com> writes:\n\nClark> Zowie, I thought I only had to worry about folks sending\nClark> patches with incomplete information. So you get patches to the\nClark> ada compiler that are rooted in gcc/ada (e.g.  patch in tarball\nClark> says \"./ChangeLog\", instead of gcc/ada/ChangeLog) rather than\nClark> at a top level? Only way I could see to deal with that would be\nClark> to try and pass in the appropriate prefix from the command\nClark> line.\n\nYes, passing the prefix and strip levels would be fine.\n\n  Sam\n-- \nSamuel Tardieu -- sam@rfc1149.net -- http://www.rfc1149.net/\n"},{"id":"90567","messageId":"20080912154447.GD31240@diana.vm.bytemark.co.uk","threadId":"15398","inReplyTo":"48CA674B.9080900@gmail.com","subject":"Re: [StGit PATCH] add option to import series directly from a tar archive","fromName":"Karl Hasselström","fromEmail":"kha@treskal.com","sentAt":"2008-09-12T15:44:47Z","receivedAt":"2008-09-12T15:44:47Z","isPatch":true,"sender":{"key":"kha@treskal.com","avatar":"https://gravatar.com/avatar/f0120c734b5279b345075a28521e1ac66acb20c9913ffe9bf6ae97e53f7f3f13?d=mp&s=160"},"body":"On 2008-09-12 07:57:47 -0500, Clark Williams wrote:\n\n> then write a test to keep Karl happy,\n\nTechnically, you write the test to make sure that your new feature\nworks as intended and won't break in the future. But since that's\nrather a mouthful, I guess \"Karl\" will do as an acronym. ;-)\n\n> then try to come up with a way to deal with importing patches that\n> don't have complete email addresses, no descriptions, etc. Once I\n> get through that, I'll see if we can deal with weirdly rooted patch\n> series.\n\nNice.\n\n-- \nKarl Hasselström, kha@treskal.com\n      www.treskal.com/kalle\n"}]}