Re: [PATCH] Make 'cvs -n commit ...' not to commit
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 23, 2012, 18:39 UTC
- Message-ID
- <7vhaxftb54.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20120323131100.7262D440B33@melkor.giref.ulaval.ca>
ericc <eric.chamberland@giref.ulaval.ca> writes:
> Actually, doing a 'cvs -n commit' will _do_ the commit... > With this patch, it now goes through the code, but don't do the commit.
OK.
> A further progress would be to do the pre-commit hook is possible...
It is not clear what you meant here.
Show 25 quoted lines
> Eric Chamberland <Eric.Chamberland@giref.ulaval.ca>
> ---
> git-cvsserver.perl | 9 ++++++++-
> 1 files changed, 8 insertions(+), 1 deletions(-)
>
> diff --git a/git-cvsserver.perl b/git-cvsserver.perl
> index b8eddab..67ec4d0 100755
> --- a/git-cvsserver.perl
> +++ b/git-cvsserver.perl
> @@ -1395,6 +1395,9 @@ sub req_ci
> push @committedfiles, $committedfile;
> $log->info("Committing $filename");
>
> + # Don't want to actually _DO_ the update if -n specified
> + unless ( $state->{globaloptions}{-n} )
> + {
> system("mkdir","-p",$dirpart) unless ( -d $dirpart );
>
> unless ( $rmflag )
> @@ -1424,6 +1427,7 @@ sub req_ci
> $log->info("Updating file '$filename'");
> system("git", "update-index", $filename);
> }
> + }
> }I understand that you tried to make the patch smaller by avoiding re-indenting, but this is *yucky*.
It looks to me that the above part could be solved with:
unless (...) {
next;
}I think the function being patched is too big. Wouldn't it be better to have a refactoring patch to move the above per-path logic to a helper function that deals with a single path, and then insert the "omit call to that helper when run with -n" code in a separate patch?
The same comment applies to the other hunk.
Also I notice that the indentation used throughout the file is somewhat broken (e.g. "Emulate by running hooks/update" part is indented to 8 columns, but earlier parts use 4 space indent). The right structure for this change may be:
Patch 1: Fix indentation (and do nothing else) to uniformly indent with
HT;Patch 2: Refactor this big funciton using a handful of helper functions (and do nothing else);
Patch 3: Omit calls to these helper functions under -n option.
Show 19 quoted lines
> @@ -1434,6 +1438,9 @@ sub req_ci
> return;
> }
>
> + # Don't want to actually _DO_ the update if -n specified
> + unless ( $state->{globaloptions}{-n} )
> + {
> my $treehash = `git write-tree`;
> chomp $treehash;
>
> @@ -1537,7 +1544,7 @@ sub req_ci
> print "/$filepart/1.$meta->{revision}//$kopts/\n";
> }
> }
> -
> + }
> cleanupWorkTree();
> print "ok\n";
> }