{"thread":{"id":"29462","subject":"[PATCH] git-svn: un-break \"git svn rebase\" when log.abbrevCommit=true","startedAt":"2012-01-29T02:11:13Z","lastAt":"2012-02-12T06:49:42Z","messageCount":9,"participants":["Ævar Arnfjörð Bjarmason","Jonathan Nieder","Dan Johnson","Eric Wong"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"183236","messageId":"1327803073-7000-1-git-send-email-avarab@gmail.com","threadId":"29462","inReplyTo":null,"subject":"[PATCH] git-svn: un-break \"git svn rebase\" when log.abbrevCommit=true","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2012-01-29T02:11:13Z","receivedAt":"2012-01-29T02:11:13Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Change git-svn to parse --no-abbrev-commit --no-decorate to git-log\nsince it's trying to parse the log output, and the parsing will fail\ncompletely if log.abbrevCommit is set to true in the configuration,\nalso set --no-decorate so we won't fail if we're processing a commit\nthat has a tag pointing to it.\n\nWithout this patch the code will fail to parse a SHA1, and then just\nspew a bunch of \"Use of uninitialized value $hash in string eq\"\nwarnings at \"if ($c && $c eq $hash) { ...\" and never do anything\nuseful.\n\nA real fix would be to make git-svn not use any porcelain utilities,\nbut just work around it for now.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n git-svn.perl |    3 ++-\n 1 files changed, 2 insertions(+), 1 deletions(-)\n\ndiff --git a/git-svn.perl b/git-svn.perl\nindex eeb83d3..570fe9c 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -1879,7 +1879,8 @@ sub cmt_sha2rev_batch {\n sub working_head_info {\n \tmy ($head, $refs) = @_;\n \tmy @args = qw/log --no-color --no-decorate --first-parent\n-\t              --pretty=medium/;\n+\t              --pretty=medium --no-abbrev-commit --no-decorate/;\n+\n \tmy ($fh, $ctx) = command_output_pipe(@args, $head);\n \tmy $hash;\n \tmy %max;\n-- \n1.7.8.3\n"},{"id":"183239","messageId":"20120129025914.GA5981@burratino","threadId":"29462","inReplyTo":"1327803073-7000-1-git-send-email-avarab@gmail.com","subject":"Re: [PATCH] git-svn: un-break \"git svn rebase\" when log.abbrevCommit=true","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2012-01-29T02:59:14Z","receivedAt":"2012-01-29T02:59:14Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Ævar Arnfjörð Bjarmason wrote:\n\n> --- a/git-svn.perl\n> +++ b/git-svn.perl\n> @@ -1879,7 +1879,8 @@ sub cmt_sha2rev_batch {\n>  sub working_head_info {\n>  \tmy ($head, $refs) = @_;\n>  \tmy @args = qw/log --no-color --no-decorate --first-parent\n> -\t              --pretty=medium/;\n> +\t              --pretty=medium --no-abbrev-commit --no-decorate/;\n> +\n\nOh, dear.  Wouldn't\n\n\tmy @args = qw/rev-list --first-parent --pretty=medium/;\n\nbe simpler and more robust as a quick fix?\n\nOf course something that takes plain rev-list --first-parent output\nand pipes it through to cat-file --batch might be more intuitive, but\nrev-list --pretty should at least work. ;-)\n"},{"id":"183241","messageId":"CACBZZX4_54LNqiEEA1BVvJFcLh_o=_ErHWGZMxSHTV2yTqte_Q@mail.gmail.com","threadId":"29462","inReplyTo":"20120129025914.GA5981@burratino","subject":"Re: [PATCH] git-svn: un-break \"git svn rebase\" when log.abbrevCommit=true","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2012-01-29T03:12:18Z","receivedAt":"2012-01-29T03:12:18Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Sun, Jan 29, 2012 at 03:59, Jonathan Nieder <jrnieder@gmail.com> wrote:\n> Ævar Arnfjörð Bjarmason wrote:\n>\n>> --- a/git-svn.perl\n>> +++ b/git-svn.perl\n>> @@ -1879,7 +1879,8 @@ sub cmt_sha2rev_batch {\n>>  sub working_head_info {\n>>       my ($head, $refs) = @_;\n>>       my @args = qw/log --no-color --no-decorate --first-parent\n>> -                   --pretty=medium/;\n>> +                   --pretty=medium --no-abbrev-commit --no-decorate/;\n>> +\n>\n> Oh, dear.  Wouldn't\n>\n>        my @args = qw/rev-list --first-parent --pretty=medium/;\n>\n> be simpler and more robust as a quick fix?\n>\n> Of course something that takes plain rev-list --first-parent output\n> and pipes it through to cat-file --batch might be more intuitive, but\n> rev-list --pretty should at least work. ;-)\n\nThat sounds like a better fix. I forgot that rev-list could emulate\ngit-log like that.\n"},{"id":"183381","messageId":"CAPBPrntdWAM056C_iZDD1XZy6KZ=5rKvH98Owgc-J8ZbBwrErg@mail.gmail.com","threadId":"29462","inReplyTo":"1327803073-7000-1-git-send-email-avarab@gmail.com","subject":"Re: [PATCH] git-svn: un-break \"git svn rebase\" when log.abbrevCommit=true","fromName":"Dan Johnson","fromEmail":"computerdruid@gmail.com","sentAt":"2012-01-30T20:41:16Z","receivedAt":"2012-01-30T20:41:16Z","isPatch":true,"sender":{"key":"computerdruid@gmail.com","avatar":"https://avatars.githubusercontent.com/u/34696?v=4"},"body":"On Sat, Jan 28, 2012 at 9:11 PM, Ævar Arnfjörð Bjarmason\n<avarab@gmail.com> wrote:\n> Change git-svn to parse --no-abbrev-commit --no-decorate to git-log\nDid you mean _pass_ --no-abbrev-commit here?\n\n-- \n-Dan\n"},{"id":"183389","messageId":"CACBZZX5cwZ4Xz3-C8B3v4eEmyO0B-JiohfRATu1UhxzST0ar5w@mail.gmail.com","threadId":"29462","inReplyTo":"CAPBPrntdWAM056C_iZDD1XZy6KZ=5rKvH98Owgc-J8ZbBwrErg@mail.gmail.com","subject":"Re: [PATCH] git-svn: un-break \"git svn rebase\" when log.abbrevCommit=true","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2012-01-30T21:18:15Z","receivedAt":"2012-01-30T21:18:15Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Mon, Jan 30, 2012 at 21:41, Dan Johnson <computerdruid@gmail.com> wrote:\n> On Sat, Jan 28, 2012 at 9:11 PM, Ævar Arnfjörð Bjarmason\n> <avarab@gmail.com> wrote:\n>> Change git-svn to parse --no-abbrev-commit --no-decorate to git-log\n> Did you mean _pass_ --no-abbrev-commit here?\n\nYup.\n\nI'l submit another patch fixing this and using rev-list.\n"},{"id":"184492","messageId":"1329006186-21346-1-git-send-email-avarab@gmail.com","threadId":"29462","inReplyTo":"CACBZZX5cwZ4Xz3-C8B3v4eEmyO0B-JiohfRATu1UhxzST0ar5w@mail.gmail.com","subject":"[PATCH v2 1/2] git-svn: remove redundant porcelain option to rev-list","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2012-02-12T00:23:05Z","receivedAt":"2012-02-12T00:23:05Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Change an invocation of git-rev-list(1) to not use --no-color,\ngit-rev-list(1) will always ignore that option and the --color option,\nso there's no need to pass it.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n git-svn.perl |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/git-svn.perl b/git-svn.perl\nindex eeb83d3..712eeeb 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -3920,7 +3920,7 @@ sub rebuild {\n \tmy ($base_rev, $head) = ($partial ? $self->rev_map_max_norebuild(1) :\n \t\t(undef, undef));\n \tmy ($log, $ctx) =\n-\t    command_output_pipe(qw/rev-list --pretty=raw --no-color --reverse/,\n+\t    command_output_pipe(qw/rev-list --pretty=raw --reverse/,\n \t\t\t\t($head ? \"$head..\" : \"\") . $self->refname,\n \t\t\t\t'--');\n \tmy $metadata_url = $self->metadata_url;\n-- \n1.7.9\n"},{"id":"184493","messageId":"1329006186-21346-2-git-send-email-avarab@gmail.com","threadId":"29462","inReplyTo":"1329006186-21346-1-git-send-email-avarab@gmail.com","subject":"[PATCH v2 2/2] git-svn: un-break \"git svn rebase\" when log.abbrevCommit=true","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2012-02-12T00:23:06Z","receivedAt":"2012-02-12T00:23:06Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Change git-svn to use git-rev-list(1) instead of git-log(1) since the\nlatter is porcelain that'll cause \"git svn rebase\" to fail completely\nif log.abbrevCommit is set to true in the configuration.\n\nWithout this patch the code will fail to parse a SHA1, and then just\nspew a bunch of \"Use of uninitialized value $hash in string eq\"\nwarnings at \"if ($c && $c eq $hash) { ...\" and never do anything\nuseful.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\nHelped-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n git-svn.perl |    3 +--\n 1 files changed, 1 insertions(+), 2 deletions(-)\n\ndiff --git a/git-svn.perl b/git-svn.perl\nindex 712eeeb..bebe38b 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -1878,8 +1878,7 @@ sub cmt_sha2rev_batch {\n \n sub working_head_info {\n \tmy ($head, $refs) = @_;\n-\tmy @args = qw/log --no-color --no-decorate --first-parent\n-\t              --pretty=medium/;\n+\tmy @args = qw/rev-list --first-parent --pretty=medium/;\n \tmy ($fh, $ctx) = command_output_pipe(@args, $head);\n \tmy $hash;\n \tmy %max;\n-- \n1.7.9\n"},{"id":"184494","messageId":"20120212003131.GG2719@burratino","threadId":"29462","inReplyTo":"1329006186-21346-2-git-send-email-avarab@gmail.com","subject":"Re: [PATCH v2 2/2] git-svn: un-break \"git svn rebase\" when log.abbrevCommit=true","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2012-02-12T00:31:31Z","receivedAt":"2012-02-12T00:31:31Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Ævar Arnfjörð Bjarmason wrote:\n\n> Change git-svn to use git-rev-list(1) instead of git-log(1) since the\n> latter is porcelain that'll cause \"git svn rebase\" to fail completely\n> if log.abbrevCommit is set to true in the configuration.\n[...]\n> --- a/git-svn.perl\n> +++ b/git-svn.perl\n> @@ -1878,8 +1878,7 @@ sub cmt_sha2rev_batch {\n>  \n>  sub working_head_info {\n>  \tmy ($head, $refs) = @_;\n> -\tmy @args = qw/log --no-color --no-decorate --first-parent\n> -\t              --pretty=medium/;\n> +\tmy @args = qw/rev-list --first-parent --pretty=medium/;\n\nThanks!  The other caller to \"git log\" in this script uses\n--pretty=raw and should be safe.\n\nReviewed-by: Jonathan Nieder <jrnieder@gmail.com>\n"},{"id":"184500","messageId":"20120212064942.GA30253@dcvr.yhbt.net","threadId":"29462","inReplyTo":"1329006186-21346-1-git-send-email-avarab@gmail.com","subject":"Re: [PATCH v2 1/2] git-svn: remove redundant porcelain option to rev-list","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2012-02-12T06:49:42Z","receivedAt":"2012-02-12T06:49:42Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:\n> Change an invocation of git-rev-list(1) to not use --no-color,\n> git-rev-list(1) will always ignore that option and the --color option,\n> so there's no need to pass it.\n> \n> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n\nAcked-by: Eric Wong <normalperson@yhbt.net>\n\nThanks, will push this series.\n"}]}