{"thread":{"id":"27747","subject":"[PATCH] git svn : hook before 'git svn dcommit'","startedAt":"2011-07-02T12:48:03Z","lastAt":"2011-07-09T12:18:33Z","messageCount":11,"participants":["Frédéric Heitzmann","Matthieu Moy"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"170777","messageId":"4E0F1383.8080804@gmail.com","threadId":"27747","inReplyTo":null,"subject":"[PATCH] git svn : hook before 'git svn dcommit'","fromName":"Frédéric Heitzmann","fromEmail":"frederic.heitzmann@gmail.com","sentAt":"2011-07-02T12:48:03Z","receivedAt":"2011-07-02T12:48:03Z","isPatch":true,"sender":{"key":"frederic.heitzmann@gmail.com","avatar":null},"body":"The 'pre-svn-dcommit' hook si called before 'git svn dcommit', which aborts\nif return value is not zero.\n---\n  git-svn.perl |   19 +++++++++++++++++++\n  1 files changed, 19 insertions(+), 0 deletions(-)\n\ndiff --git a/git-svn.perl b/git-svn.perl\nindex 89f83fd..e70afae 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -396,6 +396,23 @@ sub init_subdir {\n         $_repository = Git->repository(Repository => $ENV{GIT_DIR});\n  }\n\n+sub pre_svn_dcommit_hook {\n+       my $hook = \"$ENV{GIT_DIR}/hooks/pre-svn-dcommit\";\n+       return 0 if ! -e $hook || ! -x $hook;\n+\n+       system($hook);\n+       if ($? == -1) {\n+               print \"[pre_svn_dcommit_hook] failed to execute $hook: \n$!\\n\";\n+               return 1;\n+       } elsif ($? & 127) {\n+               printf \"[pre_svn_dcommit_hook] child died with signal \n%d, %s coredump\\n\",\n+               ($? & 127),  ($? & 128) ? 'with' : 'without';\n+               return 1;\n+       } else {\n+               return $? >> 8;\n+       }\n+}\n+\n  sub cmd_clone {\n         my ($url, $path) = @_;\n         if (!defined $path &&\n@@ -518,6 +535,8 @@ sub cmd_dcommit {\n                 command(['checkout', $head], STDERR => 0);\n         }\n\n+       return if pre_svn_dcommit_hook();\n+\n         my @refs;\n         my ($url, $rev, $uuid, $gs) = working_head_info('HEAD', \\@refs);\n         unless ($gs) {\n-- \n"},{"id":"170778","messageId":"vpqboxcu6td.fsf@bauges.imag.fr","threadId":"27747","inReplyTo":"4E0F1383.8080804@gmail.com","subject":"Re: [PATCH] git svn : hook before 'git svn dcommit'","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2011-07-02T13:54:06Z","receivedAt":"2011-07-02T13:54:06Z","isPatch":true,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"Frédéric Heitzmann <frederic.heitzmann@gmail.com> writes:\n\n> The 'pre-svn-dcommit' hook si called before 'git svn dcommit', which aborts\n> if return value is not zero.\n> ---\n>  git-svn.perl |   19 +++++++++++++++++++\n\nWhat about documentation?\n\n> +       if ($? == -1) {\n> +               print \"[pre_svn_dcommit_hook] failed to execute $hook:\n> $!\\n\";\n\nwhitespace damage (extra newline)\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"170780","messageId":"4E0F5485.9010201@gmail.com","threadId":"27747","inReplyTo":"vpqboxcu6td.fsf@bauges.imag.fr","subject":"Re: [PATCH] git svn : hook before 'git svn dcommit'","fromName":"Frédéric Heitzmann","fromEmail":"frederic.heitzmann@gmail.com","sentAt":"2011-07-02T17:25:25Z","receivedAt":"2011-07-02T17:25:25Z","isPatch":true,"sender":{"key":"frederic.heitzmann@gmail.com","avatar":null},"body":"\nLe 02/07/2011 15:54, Matthieu Moy a écrit :\n> Frédéric Heitzmann<frederic.heitzmann@gmail.com>  writes:\n>\n>> The 'pre-svn-dcommit' hook si called before 'git svn dcommit', which aborts\n>> if return value is not zero.\n>> ---\n>>   git-svn.perl |   19 +++++++++++++++++++\n> What about documentation?\nShould documentation be part of githooks or git-svn man page ?\nI vote for the latest, in order to avoid\nIn any case, what do you think of the following help message ?\n\n+HOOKS\n+-----\n+\n+The 'pre-svn-dcommit' hook is called by 'git svn dcommit' and can be \nused to\n+prevent some diff to be committed to a SVN repository. It may typically be\n+used to filter some intermediate patches, which were committed into git but\n+must not find their way to the SVN repository.\n+\n+If the hook exists with a non zero-status, 'git svn dcommit' will abort.\n+\n+\n\n[...]\n\n  SEE ALSO\n  --------\n-linkgit:git-rebase[1]\n+linkgit:git-rebase[1], linkgit:githooks[5]\n\n-- \n\n>> +       if ($? == -1) {\n>> +               print \"[pre_svn_dcommit_hook] failed to execute $hook:\n>> $!\\n\";\n> whitespace damage (extra newline)\n>\n\nAs for the 'whitespace damage\", I do not understand what you mean.\nThe \\n look mandatory to me.\nYou may look at 'info perlfunc' for the original code snippet (see \n'system' function).\n\n--\nFred\n"},{"id":"170790","messageId":"vpqfwmos5sg.fsf@bauges.imag.fr","threadId":"27747","inReplyTo":"4E0F5485.9010201@gmail.com","subject":"Re: [PATCH] git svn : hook before 'git svn dcommit'","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2011-07-02T21:59:11Z","receivedAt":"2011-07-02T21:59:11Z","isPatch":true,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"Frédéric Heitzmann <frederic.heitzmann@gmail.com> writes:\n\n> Le 02/07/2011 15:54, Matthieu Moy a écrit :\n>> Frédéric Heitzmann<frederic.heitzmann@gmail.com>  writes:\n>>\n>>> The 'pre-svn-dcommit' hook si called before 'git svn dcommit', which aborts\n>>> if return value is not zero.\n>>> ---\n>>>   git-svn.perl |   19 +++++++++++++++++++\n>> What about documentation?\n> Should documentation be part of githooks or git-svn man page ?\n> I vote for the latest, in order to avoid\n\nI'd also put it in the git-svn page, since git-svn is somehow not really\npart of Git.\n\n> +prevent some diff to be committed to a SVN repository.\n\nI'd say \"an SVN\", not \"a SVN\", but the documentation already use both\nforms.\n\n>>> +       if ($? == -1) {\n>>> +               print \"[pre_svn_dcommit_hook] failed to execute $hook:\n>>> $!\\n\";\n>> whitespace damage (extra newline)\n>>\n>\n>As for the 'whitespace damage\", I do not understand what you mean.\n>The \\n look mandatory to me.\n>You may look at 'info perlfunc' for the original code snippet (see\n>system' function).\n\nI'm not talking about the \\n, but the fact that what used to be a single\nline of code is broken in two parts in your message.\n\nA patch hunk has lines starting with \" \", \"+\" or \"-\", yours have a line\nstarting with $. It won't apply with \"patch\" or \"git apply\", hence extra\nwork for our maintainer.\n\nTry using \"git send-email\" to avoid that.\n\nAnd actually, read Documentation/SubmittingPatches, in particular the\npart about Signed-off-by.\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"170804","messageId":"1309726156-31156-1-git-send-email-frederic.heitzmann@gmail.com","threadId":"27747","inReplyTo":"vpqfwmos5sg.fsf@bauges.imag.fr","subject":"[PATCH] git svn : hook before 'git svn dcommit'","fromName":"Frédéric Heitzmann","fromEmail":"frederic.heitzmann@gmail.com","sentAt":"2011-07-03T20:49:14Z","receivedAt":"2011-07-03T20:49:14Z","isPatch":true,"sender":{"key":"frederic.heitzmann@gmail.com","avatar":null},"body":"The 'pre-svn-dcommit' hook is called by 'git svn dcommit' and can be used to\nprevent some diff to be committed to a SVN repository. It may typically be\nused to filter some intermediate patches, which were committed into git but\nmust not find their way to the SVN repository.\n\nIt takes a single parameter, the reference given to 'git svn dcommit'. If the\nhook exists with a non zero-status, 'git svn dcommit' will abort.\n\nDocumentation/git-svn.txt |   14 +++++++++++++-\ngit-svn.perl              |   21 +++++++++++++++++++++\n2 files changed, 34 insertions(+), 1 deletions(-)\n"},{"id":"170805","messageId":"1309726156-31156-2-git-send-email-frederic.heitzmann@gmail.com","threadId":"27747","inReplyTo":"1309726156-31156-1-git-send-email-frederic.heitzmann@gmail.com","subject":"[PATCH 1/2] git svn : hook before 'git svn dcommit'","fromName":"Frédéric Heitzmann","fromEmail":"frederic.heitzmann@gmail.com","sentAt":"2011-07-03T20:49:15Z","receivedAt":"2011-07-03T20:49:15Z","isPatch":true,"sender":{"key":"frederic.heitzmann@gmail.com","avatar":null},"body":"The 'pre-svn-dcommit' hook is called before 'git svn dcommit', which aborts\nif return value is not zero.\n\nSigned-off-by: Frédéric Heitzmann <frederic.heitzmann@gmail.com>\n---\n git-svn.perl |   21 +++++++++++++++++++++\n 1 files changed, 21 insertions(+), 0 deletions(-)\n\ndiff --git a/git-svn.perl b/git-svn.perl\nindex 89f83fd..a537858 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -396,6 +396,25 @@ sub init_subdir {\n \t$_repository = Git->repository(Repository => $ENV{GIT_DIR});\n }\n \n+sub pre_svn_dcommit_hook {\n+\tmy $head = shift;\n+\n+\tmy $hook = \"$ENV{GIT_DIR}/hooks/pre-svn-dcommit\";\n+\treturn 0 if ! -e $hook || ! -x $hook;\n+\n+\tsystem($hook, $head);\n+\tif ($? == -1) {\n+\t\tprint \"[pre_svn_dcommit_hook] failed to execute $hook: $!\\n\";\n+\t\treturn 1;\n+\t} elsif ($? & 127) {\n+\t\tprintf \"[pre_svn_dcommit_hook] child died with signal %d, %s coredump\\n\",\n+\t\t($? & 127),  ($? & 128) ? 'with' : 'without';\n+\t\treturn 1;\n+\t} else {\n+\t\treturn $? >> 8;\n+\t}\n+}\n+\n sub cmd_clone {\n \tmy ($url, $path) = @_;\n \tif (!defined $path &&\n@@ -505,6 +524,8 @@ sub cmd_dcommit {\n \t\t. \"or stash them with `git stash'.\\n\";\n \t$head ||= 'HEAD';\n \n+\treturn if pre_svn_dcommit_hook($head);\n+\n \tmy $old_head;\n \tif ($head ne 'HEAD') {\n \t\t$old_head = eval {\n-- \n1.7.6.133.gd3b55a\n"},{"id":"170806","messageId":"1309726156-31156-3-git-send-email-frederic.heitzmann@gmail.com","threadId":"27747","inReplyTo":"1309726156-31156-1-git-send-email-frederic.heitzmann@gmail.com","subject":"[PATCH 2/2] git svn : documentation of 'pre-svn-dcommit'","fromName":"Frédéric Heitzmann","fromEmail":"frederic.heitzmann@gmail.com","sentAt":"2011-07-03T20:49:16Z","receivedAt":"2011-07-03T20:49:16Z","isPatch":true,"sender":{"key":"frederic.heitzmann@gmail.com","avatar":null},"body":"Update of the git-svn documentation: 'pre-svn-dcommit' hook.\n\nSigned-off-by: Frédéric Heitzmann <frederic.heitzmann@gmail.com>\n---\n Documentation/git-svn.txt |   14 +++++++++++++-\n 1 files changed, 13 insertions(+), 1 deletions(-)\n\ndiff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt\nindex 713e523..ec87ed3 100644\n--- a/Documentation/git-svn.txt\n+++ b/Documentation/git-svn.txt\n@@ -700,6 +700,18 @@ section because they affect the 'git-svn-id:' metadata line, except\n for rewriteRoot and rewriteUUID which can be used together.\n \n \n+HOOKS\n+-----\n+\n+The 'pre-svn-dcommit' hook is called by 'git svn dcommit' and can be used to\n+prevent some diff to be committed to a SVN repository. It may typically be\n+used to filter some intermediate patches, which were committed into git but\n+must not find their way to the SVN repository.\n+\n+It takes a single parameter, the reference given to 'git svn dcommit'. If the\n+hook exists with a non zero-status, 'git svn dcommit' will abort.\n+\n+\n BASIC EXAMPLES\n --------------\n \n@@ -901,7 +913,7 @@ reset) branches-maxRev and/or tags-maxRev as appropriate.\n \n SEE ALSO\n --------\n-linkgit:git-rebase[1]\n+linkgit:git-rebase[1], linkgit:githooks[5]\n \n GIT\n ---\n-- \n1.7.6.133.gd3b55a\n"},{"id":"170807","messageId":"vpq62njaxl2.fsf@bauges.imag.fr","threadId":"27747","inReplyTo":"1309726156-31156-1-git-send-email-frederic.heitzmann@gmail.com","subject":"Re: [PATCH] git svn : hook before 'git svn dcommit'","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2011-07-03T21:00:41Z","receivedAt":"2011-07-03T21:00:41Z","isPatch":true,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"Frédéric Heitzmann <frederic.heitzmann@gmail.com> writes:\n\n> The 'pre-svn-dcommit' hook is called by 'git svn dcommit' and can be used to\n> prevent some diff to be committed to a SVN repository. It may typically be\n> used to filter some intermediate patches, which were committed into git but\n> must not find their way to the SVN repository.\n\nWhy 2 patches?\n\nWe usually try to have each commit as correct as possible (e.g. when\nsending several patches, each commit should still pass the testsuite).\nWith your 2-patches serie, the first commit has documentation for a\nfeature which doesn't exist yet.\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"170809","messageId":"4E11558B.90708@gmail.com","threadId":"27747","inReplyTo":"vpq62njaxl2.fsf@bauges.imag.fr","subject":"Re: [PATCH] git svn : hook before 'git svn dcommit'","fromName":"Frédéric Heitzmann","fromEmail":"frederic.heitzmann@gmail.com","sentAt":"2011-07-04T05:54:19Z","receivedAt":"2011-07-04T05:54:19Z","isPatch":true,"sender":{"key":"frederic.heitzmann@gmail.com","avatar":null},"body":"\n\nLe 03/07/2011 23:00, Matthieu Moy a écrit :\n> Frédéric Heitzmann<frederic.heitzmann@gmail.com>  writes:\n>\n>> The 'pre-svn-dcommit' hook is called by 'git svn dcommit' and can be used to\n>> prevent some diff to be committed to a SVN repository. It may typically be\n>> used to filter some intermediate patches, which were committed into git but\n>> must not find their way to the SVN repository.\n> Why 2 patches?\n>\n> We usually try to have each commit as correct as possible (e.g. when\n> sending several patches, each commit should still pass the testsuite).\n> With your 2-patches serie, the first commit has documentation for a\n> feature which doesn't exist yet.\nI find it easier to separate commits on documentation from code patch, \nespecially for rereading and dicussing.\nHowever, if it is desirable to get them merged, I could do that easily.\n\nAs for the order :\npatch 1/2 : perl magic\npatch 2/2 : documentation update\n=>  the serie looks in the right order to me.\n"},{"id":"170841","messageId":"1309898684-9486-1-git-send-email-frederic.heitzmann@gmail.com","threadId":"27747","inReplyTo":"4E11558B.90708@gmail.com","subject":"[PATCH v2] git svn : hook before 'git svn dcommit'","fromName":"Frédéric Heitzmann","fromEmail":"frederic.heitzmann@gmail.com","sentAt":"2011-07-05T20:44:44Z","receivedAt":"2011-07-05T20:44:44Z","isPatch":true,"sender":{"key":"frederic.heitzmann@gmail.com","avatar":null},"body":"The 'pre-svn-dcommit' hook is called before 'git svn dcommit', which aborts\nif return value is not zero. The only parameter given to the hook is the\nreference given to 'git svn dcommit'. If no paramter was used, hook gets HEAD\nas its only parameter.\n\nSigned-off-by: Frédéric Heitzmann <frederic.heitzmann@gmail.com>\n---\n\nThis is the second iteration of the patch.\nPrevious 2 patches were merged into one. \n\n Documentation/git-svn.txt |   14 +++++++++++++-\n git-svn.perl              |   21 +++++++++++++++++++++\n 2 files changed, 34 insertions(+), 1 deletions(-)\n\ndiff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt\nindex 713e523..ec87ed3 100644\n--- a/Documentation/git-svn.txt\n+++ b/Documentation/git-svn.txt\n@@ -700,6 +700,18 @@ section because they affect the 'git-svn-id:' metadata line, except\n for rewriteRoot and rewriteUUID which can be used together.\n \n \n+HOOKS\n+-----\n+\n+The 'pre-svn-dcommit' hook is called by 'git svn dcommit' and can be used to\n+prevent some diff to be committed to a SVN repository. It may typically be\n+used to filter some intermediate patches, which were committed into git but\n+must not find their way to the SVN repository.\n+\n+It takes a single parameter, the reference given to 'git svn dcommit'. If the\n+hook exists with a non zero-status, 'git svn dcommit' will abort.\n+\n+\n BASIC EXAMPLES\n --------------\n \n@@ -901,7 +913,7 @@ reset) branches-maxRev and/or tags-maxRev as appropriate.\n \n SEE ALSO\n --------\n-linkgit:git-rebase[1]\n+linkgit:git-rebase[1], linkgit:githooks[5]\n \n GIT\n ---\ndiff --git a/git-svn.perl b/git-svn.perl\nindex 89f83fd..a537858 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -396,6 +396,25 @@ sub init_subdir {\n \t$_repository = Git->repository(Repository => $ENV{GIT_DIR});\n }\n \n+sub pre_svn_dcommit_hook {\n+\tmy $head = shift;\n+\n+\tmy $hook = \"$ENV{GIT_DIR}/hooks/pre-svn-dcommit\";\n+\treturn 0 if ! -e $hook || ! -x $hook;\n+\n+\tsystem($hook, $head);\n+\tif ($? == -1) {\n+\t\tprint \"[pre_svn_dcommit_hook] failed to execute $hook: $!\\n\";\n+\t\treturn 1;\n+\t} elsif ($? & 127) {\n+\t\tprintf \"[pre_svn_dcommit_hook] child died with signal %d, %s coredump\\n\",\n+\t\t($? & 127),  ($? & 128) ? 'with' : 'without';\n+\t\treturn 1;\n+\t} else {\n+\t\treturn $? >> 8;\n+\t}\n+}\n+\n sub cmd_clone {\n \tmy ($url, $path) = @_;\n \tif (!defined $path &&\n@@ -505,6 +524,8 @@ sub cmd_dcommit {\n \t\t. \"or stash them with `git stash'.\\n\";\n \t$head ||= 'HEAD';\n \n+\treturn if pre_svn_dcommit_hook($head);\n+\n \tmy $old_head;\n \tif ($head ne 'HEAD') {\n \t\t$old_head = eval {\n-- \n1.7.6.133.gd3b55a\n"},{"id":"171028","messageId":"1310213913-26179-1-git-send-email-frederic.heitzmann@gmail.com","threadId":"27747","inReplyTo":"1309898684-9486-1-git-send-email-frederic.heitzmann@gmail.com","subject":"[PATCH v2] git svn : hook before 'git svn dcommit'","fromName":"Frédéric Heitzmann","fromEmail":"frederic.heitzmann@gmail.com","sentAt":"2011-07-09T12:18:33Z","receivedAt":"2011-07-09T12:18:33Z","isPatch":true,"sender":{"key":"frederic.heitzmann@gmail.com","avatar":null},"body":"The 'pre-svn-dcommit' hook is called before 'git svn dcommit', which aborts\nif return value is not zero. The only parameter given to the hook is the\nreference given to 'git svn dcommit'. If no paramter was used, hook gets HEAD\nas its only parameter.\n\nSigned-off-by: Frédéric Heitzmann <frederic.heitzmann@gmail.com>\n---\nThere was no remark about patch v2.\nI suppose it should be OK for merging upstream.\n\n Documentation/git-svn.txt |   14 +++++++++++++-\n git-svn.perl              |   21 +++++++++++++++++++++\n 2 files changed, 34 insertions(+), 1 deletions(-)\n\ndiff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt\nindex 713e523..ec87ed3 100644\n--- a/Documentation/git-svn.txt\n+++ b/Documentation/git-svn.txt\n@@ -700,6 +700,18 @@ section because they affect the 'git-svn-id:' metadata line, except\n for rewriteRoot and rewriteUUID which can be used together.\n \n \n+HOOKS\n+-----\n+\n+The 'pre-svn-dcommit' hook is called by 'git svn dcommit' and can be used to\n+prevent some diff to be committed to a SVN repository. It may typically be\n+used to filter some intermediate patches, which were committed into git but\n+must not find their way to the SVN repository.\n+\n+It takes a single parameter, the reference given to 'git svn dcommit'. If the\n+hook exists with a non zero-status, 'git svn dcommit' will abort.\n+\n+\n BASIC EXAMPLES\n --------------\n \n@@ -901,7 +913,7 @@ reset) branches-maxRev and/or tags-maxRev as appropriate.\n \n SEE ALSO\n --------\n-linkgit:git-rebase[1]\n+linkgit:git-rebase[1], linkgit:githooks[5]\n \n GIT\n ---\ndiff --git a/git-svn.perl b/git-svn.perl\nindex 89f83fd..a537858 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -396,6 +396,25 @@ sub init_subdir {\n \t$_repository = Git->repository(Repository => $ENV{GIT_DIR});\n }\n \n+sub pre_svn_dcommit_hook {\n+\tmy $head = shift;\n+\n+\tmy $hook = \"$ENV{GIT_DIR}/hooks/pre-svn-dcommit\";\n+\treturn 0 if ! -e $hook || ! -x $hook;\n+\n+\tsystem($hook, $head);\n+\tif ($? == -1) {\n+\t\tprint \"[pre_svn_dcommit_hook] failed to execute $hook: $!\\n\";\n+\t\treturn 1;\n+\t} elsif ($? & 127) {\n+\t\tprintf \"[pre_svn_dcommit_hook] child died with signal %d, %s coredump\\n\",\n+\t\t($? & 127),  ($? & 128) ? 'with' : 'without';\n+\t\treturn 1;\n+\t} else {\n+\t\treturn $? >> 8;\n+\t}\n+}\n+\n sub cmd_clone {\n \tmy ($url, $path) = @_;\n \tif (!defined $path &&\n@@ -505,6 +524,8 @@ sub cmd_dcommit {\n \t\t. \"or stash them with `git stash'.\\n\";\n \t$head ||= 'HEAD';\n \n+\treturn if pre_svn_dcommit_hook($head);\n+\n \tmy $old_head;\n \tif ($head ne 'HEAD') {\n \t\t$old_head = eval {\n-- \n1.7.6.133.gd3b55a\n"}]}