{"thread":{"id":"13466","subject":"[PATCH] Add svn-compatible \"blame\" output format to git-svn","startedAt":"2008-05-10T21:25:04Z","lastAt":"2008-05-11T13:46:34Z","messageCount":6,"participants":["Steven Grimm","Junio C Hamano","Teemu Likonen","Eric Wong","Tim Stoakes"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"76549","messageId":"20080510212504.GA26701@midwinter.com","threadId":"13466","inReplyTo":null,"subject":"[PATCH] Add svn-compatible \"blame\" output format to git-svn","fromName":"Steven Grimm","fromEmail":"koreth@midwinter.com","sentAt":"2008-05-10T21:25:04Z","receivedAt":"2008-05-10T21:25:04Z","isPatch":true,"sender":{"key":"koreth@midwinter.com","avatar":"https://gravatar.com/avatar/71b4d2e8b62f168bdc9e9205341159e3567003b4f9e2127c617c5fa0a1f5bad2?d=mp&s=160"},"body":"git-svn blame produces output in the format of git blame; in environments\nwhere there are scripts that read the output of svn blame, it's useful\nto be able to use them with the output of git-svn blame.\n\nThis also fixes a bug in the initial git-svn blame implementation; it was\nbombing out on uncommitted local changes.\n\nSigned-off-by: Steven Grimm <koreth@midwinter.com>\n---\n\n\tI'd actually argue that the svn-compatible format should be the\n\tdefault one, with git-compatible available as an option, but if\n\tthere are existing scripts that consume git-svn blame's output,\n\tI don't want to break them.\n\n\tI suspect there aren't any since git-svn blame is relatively new.\n\n Documentation/git-svn.txt |   11 ++++++++-\n git-svn.perl              |   51 +++++++++++++++++++++++++++++++++++++--------\n 2 files changed, 51 insertions(+), 11 deletions(-)\n\ndiff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt\nindex f4ba105..8071347 100644\n--- a/Documentation/git-svn.txt\n+++ b/Documentation/git-svn.txt\n@@ -168,9 +168,16 @@ Any other arguments are passed directly to `git log'\n 'blame'::\n        Show what revision and author last modified each line of a file. This is\n        identical to `git blame', but SVN revision numbers are shown instead of git\n-       commit hashes.\n+       commit hashes. Changes that haven't been committed to SVN yet are\n+       listed as SVN revision 0.\n +\n-All arguments are passed directly to `git blame'.\n+All arguments are passed directly to `git blame', except the following:\n++\n+--svn-format;;\n+\tProduce output in the same format as `svn blame'. In this mode,\n+\tuncommitted changes in the working copy are ignored (the version\n+\tof the file from the HEAD revision is annotated) and whitespace\n+\tcharacters in author names are replaced with underscores.\n \n --\n 'find-rev'::\ndiff --git a/git-svn.perl b/git-svn.perl\nindex e47b1ea..9570deb 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -65,7 +65,8 @@ my ($_stdin, $_help, $_edit,\n \t$_template, $_shared,\n \t$_version, $_fetch_all, $_no_rebase,\n \t$_merge, $_strategy, $_dry_run, $_local,\n-\t$_prefix, $_no_checkout, $_url, $_verbose);\n+\t$_prefix, $_no_checkout, $_url, $_verbose,\n+\t$_svn_format);\n $Git::SVN::_follow_parent = 1;\n my %remote_opts = ( 'username=s' => \\$Git::SVN::Prompt::_username,\n                     'config-dir=s' => \\$Git::SVN::Ra::config_dir,\n@@ -188,7 +189,7 @@ my %cmd = (\n \t\t    { 'url' => \\$_url, } ],\n \t'blame' => [ \\&Git::SVN::Log::cmd_blame,\n \t            \"Show what revision and author last modified each line of a file\",\n-\t            {} ],\n+\t\t    { 'svn-format' => \\$_svn_format } ],\n );\n \n my $cmd;\n@@ -4473,14 +4474,46 @@ sub cmd_blame {\n \tconfig_pager();\n \trun_pager();\n \n-\tmy ($fh, $ctx) = command_output_pipe('blame', @_, $path);\n-\twhile (my $line = <$fh>) {\n-\t\tif ($line =~ /^\\^?([[:xdigit:]]+)\\s/) {\n-\t\t\tmy (undef, $rev, undef) = ::cmt_metadata($1);\n-\t\t\t$rev = sprintf('%-10s', $rev);\n-\t\t\t$line =~ s/^\\^?[[:xdigit:]]+(\\s)/$rev$1/;\n+\tmy ($fh, $ctx, $rev);\n+\n+\tif ($_svn_format) {\n+\t\t($fh, $ctx) = command_output_pipe('blame', @_, '-p', 'HEAD',\n+\t\t\t\t\t\t     '--', $path);\n+\t\tmy ($sha1);\n+\t\tmy %authors;\n+\t\twhile (my $line = <$fh>) {\n+\t\t\tif ($line =~ /^([[:xdigit:]]{40})\\s\\d+\\s\\d+/) {\n+\t\t\t\t$sha1 = $1;\n+\t\t\t\t(undef, $rev, undef) = ::cmt_metadata($1);\n+\t\t\t\t$rev = '0' if (!$rev);\n+\t\t\t}\n+\t\t\telsif ($line =~ /^author (.*)/) {\n+\t\t\t\t$authors{$rev} = $1;\n+\t\t\t\t$authors{$rev} =~ s/\\s/_/g;\n+\t\t\t}\n+\t\t\telsif ($line =~ /^\\t(.*)$/) {\n+\t\t\t\tprintf(\"%6s %10s %s\\n\", $rev, $authors{$rev}, $1);\n+\t\t\t}\n+\t\t}\n+\t} else {\n+\t\t($fh, $ctx) = command_output_pipe('blame', @_, $path);\n+\t\twhile (my $line = <$fh>) {\n+\t\t\tif ($line =~ /^\\^?([[:xdigit:]]+)\\s/) {\n+\t\t\t\t# Uncommitted edits show up as a rev ID of\n+\t\t\t\t# all zeros, which we can't look up with\n+\t\t\t\t# cmt_metadata\n+\t\t\t\tif ($1 !~ /^0+$/) {\n+\t\t\t\t\t(undef, $rev, undef) =\n+\t\t\t\t\t\t::cmt_metadata($1);\n+\t\t\t\t\t$rev = '0' if (!$rev);\n+\t\t\t\t} else {\n+\t\t\t\t\t$rev = '0';\n+\t\t\t\t}\n+\t\t\t\t$rev = sprintf('%-10s', $rev);\n+\t\t\t\t$line =~ s/^\\^?[[:xdigit:]]+(\\s)/$rev$1/;\n+\t\t\t}\n+\t\t\tprint $line;\n \t\t}\n-\t\tprint $line;\n \t}\n \tcommand_close_pipe($fh, $ctx);\n }\n-- \n1.5.5.49.gf43e2\n"},{"id":"76570","messageId":"7vabix8t3g.fsf@gitster.siamese.dyndns.org","threadId":"13466","inReplyTo":"20080510212504.GA26701@midwinter.com","subject":"Re: [PATCH] Add svn-compatible \"blame\" output format to git-svn","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-05-11T02:36:35Z","receivedAt":"2008-05-11T02:36:35Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Steven Grimm <koreth@midwinter.com> writes:\n\n> git-svn blame produces output in the format of git blame; in environments\n> where there are scripts that read the output of svn blame, it's useful\n> to be able to use them with the output of git-svn blame.\n>\n> This also fixes a bug in the initial git-svn blame implementation; it was\n> bombing out on uncommitted local changes.\n>\n> Signed-off-by: Steven Grimm <koreth@midwinter.com>\n> ---\n>\n> \tI'd actually argue that the svn-compatible format should be the\n> \tdefault one, with git-compatible available as an option.\n\nI'd violently agree with it.\n\nList, objections?\n"},{"id":"76576","messageId":"20080511051118.GA18207@midwinter.com","threadId":"13466","inReplyTo":"7vabix8t3g.fsf@gitster.siamese.dyndns.org","subject":"[PATCH v2] Add svn-compatible \"blame\" output format to git-svn","fromName":"Steven Grimm","fromEmail":"koreth@midwinter.com","sentAt":"2008-05-11T05:11:18Z","receivedAt":"2008-05-11T05:11:18Z","isPatch":true,"sender":{"key":"koreth@midwinter.com","avatar":"https://gravatar.com/avatar/71b4d2e8b62f168bdc9e9205341159e3567003b4f9e2127c617c5fa0a1f5bad2?d=mp&s=160"},"body":"git-svn blame produced output in the format of git blame; in environments\nwhere there are scripts that read the output of svn blame, it's useful\nto be able to use them with the output of git-svn. The git-compatible\nformat is still available using the new \"--git-format\" option.\n\nThis also fixes a bug in the initial git-svn blame implementation; it was\nbombing out on uncommitted local changes.\n\nSigned-off-by: Steven Grimm <koreth@midwinter.com>\n---\n\n\tThe svn-compatible format is now the default.\n\n Documentation/git-svn.txt |   15 +++++++++---\n git-svn.perl              |   55 ++++++++++++++++++++++++++++++++++++---------\n 2 files changed, 55 insertions(+), 15 deletions(-)\n\ndiff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt\nindex f4ba105..c6b56b4 100644\n--- a/Documentation/git-svn.txt\n+++ b/Documentation/git-svn.txt\n@@ -166,11 +166,18 @@ environment). This command has the same behaviour.\n Any other arguments are passed directly to `git log'\n \n 'blame'::\n-       Show what revision and author last modified each line of a file. This is\n-       identical to `git blame', but SVN revision numbers are shown instead of git\n-       commit hashes.\n+       Show what revision and author last modified each line of a file. The\n+       output of this mode is format-compatible with the output of\n+       `svn blame' by default. Like the SVN blame command,\n+       local uncommitted changes in the working copy are ignored;\n+       the version of the file in the HEAD revision is annotated. Unknown\n+       arguments are passed directly to git-blame.\n +\n-All arguments are passed directly to `git blame'.\n+--git-format;;\n+\tProduce output in the same format as `git blame', but with\n+\tSVN revision numbers instead of git commit hashes. In this mode,\n+\tchanges that haven't been committed to SVN (including local\n+\tworking-copy edits) are shown as revision 0.\n \n --\n 'find-rev'::\ndiff --git a/git-svn.perl b/git-svn.perl\nindex e47b1ea..77f880e 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -65,7 +65,8 @@ my ($_stdin, $_help, $_edit,\n \t$_template, $_shared,\n \t$_version, $_fetch_all, $_no_rebase,\n \t$_merge, $_strategy, $_dry_run, $_local,\n-\t$_prefix, $_no_checkout, $_url, $_verbose);\n+\t$_prefix, $_no_checkout, $_url, $_verbose,\n+\t$_git_format);\n $Git::SVN::_follow_parent = 1;\n my %remote_opts = ( 'username=s' => \\$Git::SVN::Prompt::_username,\n                     'config-dir=s' => \\$Git::SVN::Ra::config_dir,\n@@ -188,7 +189,7 @@ my %cmd = (\n \t\t    { 'url' => \\$_url, } ],\n \t'blame' => [ \\&Git::SVN::Log::cmd_blame,\n \t            \"Show what revision and author last modified each line of a file\",\n-\t            {} ],\n+\t\t    { 'git-format' => \\$_git_format } ],\n );\n \n my $cmd;\n@@ -225,7 +226,7 @@ unless ($cmd && $cmd =~ /(?:clone|init|multi-init)$/) {\n my %opts = %{$cmd{$cmd}->[2]} if (defined $cmd);\n \n read_repo_config(\\%opts);\n-Getopt::Long::Configure('pass_through') if ($cmd && $cmd eq 'log');\n+Getopt::Long::Configure('pass_through') if ($cmd && ($cmd eq 'log' || $cmd eq 'blame'));\n my $rv = GetOptions(%opts, 'help|H|h' => \\$_help, 'version|V' => \\$_version,\n                     'minimize-connections' => \\$Git::SVN::Migration::_minimize,\n                     'id|i=s' => \\$Git::SVN::default_ref_id,\n@@ -4468,19 +4469,51 @@ out:\n }\n \n sub cmd_blame {\n-\tmy $path = shift;\n+\tmy $path = pop;\n \n \tconfig_pager();\n \trun_pager();\n \n-\tmy ($fh, $ctx) = command_output_pipe('blame', @_, $path);\n-\twhile (my $line = <$fh>) {\n-\t\tif ($line =~ /^\\^?([[:xdigit:]]+)\\s/) {\n-\t\t\tmy (undef, $rev, undef) = ::cmt_metadata($1);\n-\t\t\t$rev = sprintf('%-10s', $rev);\n-\t\t\t$line =~ s/^\\^?[[:xdigit:]]+(\\s)/$rev$1/;\n+\tmy ($fh, $ctx, $rev);\n+\n+\tif ($_git_format) {\n+\t\t($fh, $ctx) = command_output_pipe('blame', @_, $path);\n+\t\twhile (my $line = <$fh>) {\n+\t\t\tif ($line =~ /^\\^?([[:xdigit:]]+)\\s/) {\n+\t\t\t\t# Uncommitted edits show up as a rev ID of\n+\t\t\t\t# all zeros, which we can't look up with\n+\t\t\t\t# cmt_metadata\n+\t\t\t\tif ($1 !~ /^0+$/) {\n+\t\t\t\t\t(undef, $rev, undef) =\n+\t\t\t\t\t\t::cmt_metadata($1);\n+\t\t\t\t\t$rev = '0' if (!$rev);\n+\t\t\t\t} else {\n+\t\t\t\t\t$rev = '0';\n+\t\t\t\t}\n+\t\t\t\t$rev = sprintf('%-10s', $rev);\n+\t\t\t\t$line =~ s/^\\^?[[:xdigit:]]+(\\s)/$rev$1/;\n+\t\t\t}\n+\t\t\tprint $line;\n+\t\t}\n+\t} else {\n+\t\t($fh, $ctx) = command_output_pipe('blame', '-p', @_, 'HEAD',\n+\t\t\t\t\t\t  '--', $path);\n+\t\tmy ($sha1);\n+\t\tmy %authors;\n+\t\twhile (my $line = <$fh>) {\n+\t\t\tif ($line =~ /^([[:xdigit:]]{40})\\s\\d+\\s\\d+/) {\n+\t\t\t\t$sha1 = $1;\n+\t\t\t\t(undef, $rev, undef) = ::cmt_metadata($1);\n+\t\t\t\t$rev = '0' if (!$rev);\n+\t\t\t}\n+\t\t\telsif ($line =~ /^author (.*)/) {\n+\t\t\t\t$authors{$rev} = $1;\n+\t\t\t\t$authors{$rev} =~ s/\\s/_/g;\n+\t\t\t}\n+\t\t\telsif ($line =~ /^\\t(.*)$/) {\n+\t\t\t\tprintf(\"%6s %10s %s\\n\", $rev, $authors{$rev}, $1);\n+\t\t\t}\n \t\t}\n-\t\tprint $line;\n \t}\n \tcommand_close_pipe($fh, $ctx);\n }\n-- \n1.5.5.49.gf43e2\n"},{"id":"76584","messageId":"20080511063601.GA23224@mithlond.arda.local","threadId":"13466","inReplyTo":"7vabix8t3g.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH] Add svn-compatible \"blame\" output format to git-svn","fromName":"Teemu Likonen","fromEmail":"tlikonen@iki.fi","sentAt":"2008-05-11T06:36:01Z","receivedAt":"2008-05-11T06:36:01Z","isPatch":true,"sender":{"key":"tlikonen@iki.fi","avatar":null},"body":"Junio C Hamano wrote (2008-05-10 19:36 -0700):\n\n> Steven Grimm <koreth@midwinter.com> writes:\n> \n> > \tI'd actually argue that the svn-compatible format should be the\n> > \tdefault one, with git-compatible available as an option.\n> \n> I'd violently agree with it.\n\nMe too!\n"},{"id":"76589","messageId":"20080511074247.GA23929@untitled","threadId":"13466","inReplyTo":"20080511051118.GA18207@midwinter.com","subject":"Re: [PATCH v2] Add svn-compatible \"blame\" output format to git-svn","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2008-05-11T07:42:56Z","receivedAt":"2008-05-11T07:42:56Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"Steven Grimm <koreth@midwinter.com> wrote:\n> git-svn blame produced output in the format of git blame; in environments\n> where there are scripts that read the output of svn blame, it's useful\n> to be able to use them with the output of git-svn. The git-compatible\n> format is still available using the new \"--git-format\" option.\n> \n> This also fixes a bug in the initial git-svn blame implementation; it was\n> bombing out on uncommitted local changes.\n> \n> Signed-off-by: Steven Grimm <koreth@midwinter.com>\n\nAcked-by: Eric Wong <normalperson@yhbt.net>\n\n> ---\n> \n> \tThe svn-compatible format is now the default.\n> \n>  Documentation/git-svn.txt |   15 +++++++++---\n>  git-svn.perl              |   55 ++++++++++++++++++++++++++++++++++++---------\n>  2 files changed, 55 insertions(+), 15 deletions(-)\n> \n> diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt\n> index f4ba105..c6b56b4 100644\n> --- a/Documentation/git-svn.txt\n> +++ b/Documentation/git-svn.txt\n> @@ -166,11 +166,18 @@ environment). This command has the same behaviour.\n>  Any other arguments are passed directly to `git log'\n>  \n>  'blame'::\n> -       Show what revision and author last modified each line of a file. This is\n> -       identical to `git blame', but SVN revision numbers are shown instead of git\n> -       commit hashes.\n> +       Show what revision and author last modified each line of a file. The\n> +       output of this mode is format-compatible with the output of\n> +       `svn blame' by default. Like the SVN blame command,\n> +       local uncommitted changes in the working copy are ignored;\n> +       the version of the file in the HEAD revision is annotated. Unknown\n> +       arguments are passed directly to git-blame.\n>  +\n> -All arguments are passed directly to `git blame'.\n> +--git-format;;\n> +\tProduce output in the same format as `git blame', but with\n> +\tSVN revision numbers instead of git commit hashes. In this mode,\n> +\tchanges that haven't been committed to SVN (including local\n> +\tworking-copy edits) are shown as revision 0.\n>  \n>  --\n>  'find-rev'::\n> diff --git a/git-svn.perl b/git-svn.perl\n> index e47b1ea..77f880e 100755\n> --- a/git-svn.perl\n> +++ b/git-svn.perl\n> @@ -65,7 +65,8 @@ my ($_stdin, $_help, $_edit,\n>  \t$_template, $_shared,\n>  \t$_version, $_fetch_all, $_no_rebase,\n>  \t$_merge, $_strategy, $_dry_run, $_local,\n> -\t$_prefix, $_no_checkout, $_url, $_verbose);\n> +\t$_prefix, $_no_checkout, $_url, $_verbose,\n> +\t$_git_format);\n>  $Git::SVN::_follow_parent = 1;\n>  my %remote_opts = ( 'username=s' => \\$Git::SVN::Prompt::_username,\n>                      'config-dir=s' => \\$Git::SVN::Ra::config_dir,\n> @@ -188,7 +189,7 @@ my %cmd = (\n>  \t\t    { 'url' => \\$_url, } ],\n>  \t'blame' => [ \\&Git::SVN::Log::cmd_blame,\n>  \t            \"Show what revision and author last modified each line of a file\",\n> -\t            {} ],\n> +\t\t    { 'git-format' => \\$_git_format } ],\n>  );\n>  \n>  my $cmd;\n> @@ -225,7 +226,7 @@ unless ($cmd && $cmd =~ /(?:clone|init|multi-init)$/) {\n>  my %opts = %{$cmd{$cmd}->[2]} if (defined $cmd);\n>  \n>  read_repo_config(\\%opts);\n> -Getopt::Long::Configure('pass_through') if ($cmd && $cmd eq 'log');\n> +Getopt::Long::Configure('pass_through') if ($cmd && ($cmd eq 'log' || $cmd eq 'blame'));\n>  my $rv = GetOptions(%opts, 'help|H|h' => \\$_help, 'version|V' => \\$_version,\n>                      'minimize-connections' => \\$Git::SVN::Migration::_minimize,\n>                      'id|i=s' => \\$Git::SVN::default_ref_id,\n> @@ -4468,19 +4469,51 @@ out:\n>  }\n>  \n>  sub cmd_blame {\n> -\tmy $path = shift;\n> +\tmy $path = pop;\n>  \n>  \tconfig_pager();\n>  \trun_pager();\n>  \n> -\tmy ($fh, $ctx) = command_output_pipe('blame', @_, $path);\n> -\twhile (my $line = <$fh>) {\n> -\t\tif ($line =~ /^\\^?([[:xdigit:]]+)\\s/) {\n> -\t\t\tmy (undef, $rev, undef) = ::cmt_metadata($1);\n> -\t\t\t$rev = sprintf('%-10s', $rev);\n> -\t\t\t$line =~ s/^\\^?[[:xdigit:]]+(\\s)/$rev$1/;\n> +\tmy ($fh, $ctx, $rev);\n> +\n> +\tif ($_git_format) {\n> +\t\t($fh, $ctx) = command_output_pipe('blame', @_, $path);\n> +\t\twhile (my $line = <$fh>) {\n> +\t\t\tif ($line =~ /^\\^?([[:xdigit:]]+)\\s/) {\n> +\t\t\t\t# Uncommitted edits show up as a rev ID of\n> +\t\t\t\t# all zeros, which we can't look up with\n> +\t\t\t\t# cmt_metadata\n> +\t\t\t\tif ($1 !~ /^0+$/) {\n> +\t\t\t\t\t(undef, $rev, undef) =\n> +\t\t\t\t\t\t::cmt_metadata($1);\n> +\t\t\t\t\t$rev = '0' if (!$rev);\n> +\t\t\t\t} else {\n> +\t\t\t\t\t$rev = '0';\n> +\t\t\t\t}\n> +\t\t\t\t$rev = sprintf('%-10s', $rev);\n> +\t\t\t\t$line =~ s/^\\^?[[:xdigit:]]+(\\s)/$rev$1/;\n> +\t\t\t}\n> +\t\t\tprint $line;\n> +\t\t}\n> +\t} else {\n> +\t\t($fh, $ctx) = command_output_pipe('blame', '-p', @_, 'HEAD',\n> +\t\t\t\t\t\t  '--', $path);\n> +\t\tmy ($sha1);\n> +\t\tmy %authors;\n> +\t\twhile (my $line = <$fh>) {\n> +\t\t\tif ($line =~ /^([[:xdigit:]]{40})\\s\\d+\\s\\d+/) {\n> +\t\t\t\t$sha1 = $1;\n> +\t\t\t\t(undef, $rev, undef) = ::cmt_metadata($1);\n> +\t\t\t\t$rev = '0' if (!$rev);\n> +\t\t\t}\n> +\t\t\telsif ($line =~ /^author (.*)/) {\n> +\t\t\t\t$authors{$rev} = $1;\n> +\t\t\t\t$authors{$rev} =~ s/\\s/_/g;\n> +\t\t\t}\n> +\t\t\telsif ($line =~ /^\\t(.*)$/) {\n> +\t\t\t\tprintf(\"%6s %10s %s\\n\", $rev, $authors{$rev}, $1);\n> +\t\t\t}\n>  \t\t}\n> -\t\tprint $line;\n>  \t}\n>  \tcommand_close_pipe($fh, $ctx);\n>  }\n> -- \n> 1.5.5.49.gf43e2\n"},{"id":"76619","messageId":"20080511134633.GA17723@mail.stoakes.net","threadId":"13466","inReplyTo":"20080511063601.GA23224@mithlond.arda.local","subject":"Re: [PATCH] Add svn-compatible \"blame\" output format to git-svn","fromName":"Tim Stoakes","fromEmail":"tim@stoakes.net","sentAt":"2008-05-11T13:46:34Z","receivedAt":"2008-05-11T13:46:34Z","isPatch":true,"sender":{"key":"tim@stoakes.net","avatar":null},"body":"Teemu Likonen(tlikonen@iki.fi)@110508-09:36:\n> Junio C Hamano wrote (2008-05-10 19:36 -0700):\n> \n> > Steven Grimm <koreth@midwinter.com> writes:\n> > \n> > > \tI'd actually argue that the svn-compatible format should be the\n> > > \tdefault one, with git-compatible available as an option.\n> > \n> > I'd violently agree with it.\n> \n> Me too!\n\nLikewise, thanks for completing this code.\n\nTim\n\n-- \nTim Stoakes\n"}]}