diff --git a/DEVEL/Developer.txt b/DEVEL/Developer.txt index f43f88f43..37fd69c59 100644 --- a/DEVEL/Developer.txt +++ b/DEVEL/Developer.txt @@ -58,6 +58,11 @@ NOTE: These instructions assume you are on the default branch; this _is_ NOTE: The following instructions require perl. If you do not have perl on your system, please install it before proceeding. +NOTE: More information on nhgitset.pl is available before installation via: + perldoc DEVEL/nhgitset.pl + After installation, the same information is available with: + git nhhelp nhgitset + A. If you have never set up git on this machine before: (This assumes you will only be using git for NetHack. If you are going to use it for other projects as well, think before you type.) diff --git a/DEVEL/VERSION b/DEVEL/VERSION index 01a759d53..3788cb6d5 100644 --- a/DEVEL/VERSION +++ b/DEVEL/VERSION @@ -1,40 +1,4 @@ -4 -Fixes: -- "nhcommit -a" has been fixed -- NHDT was hardwired in places -- no longer complain about a missing dat directory outside of the - NetHack source tree -- make update of gitinfo atomic -- Replace some hardwired directory separators with OS-dependent constructs - -Backwards Incompatibilities: -- NH_DATESUB's DATE() is now Date() to match the other variables -- MSYS2 requires an additional Perl package - the MSYS2 docs have - been updated - -New Help System: -- git nhhelp - This command mirrors "git help" for nh* commands. -- See git nhhelp nhsub for general help on substitution variables - -New Substitution Variables: --Brev() - An aBREViation of $PREFIX-Branch$:$PREFIX-Revision$ - this - may help get line length under control in file headers. --Assert(TYPE=VALUE) - If TYPE does not match VALUE, do not substitute on this line. - TYPE P checks VALUE against nethack.substprefix --Project(arg) - Returns nethack.projectname if there is no arg and an uppercase - version if arg is uc. - -Other New Features: -- Add nethack.projectname -- Documentation updates - see "git nhhelp nhsub" -- On checkout or merge of a branch, check for nhgitset version updates -- Move NH_DATESUB substitutions here from cron job to keep dates in sync -- PREFIX-* keywords now available in NH_DATESUB templates -- Support use of nhgitset.pl from a different repo; note that update - checks will be dependent on keeping the original source repo up-to-date - and in the same location. - +5 +Please see "git log DEVEL" for previous changes. +Make documentation of nhgitset.pl easier to find and +find out about. diff --git a/DEVEL/nhgitset.pl b/DEVEL/nhgitset.pl index 984d45a32..e235a33ce 100755 --- a/DEVEL/nhgitset.pl +++ b/DEVEL/nhgitset.pl @@ -153,6 +153,7 @@ my $nhsub = catfile(curdir(),'.git','hooks','nhsub'); &add_help('NHsubst', 'NHsubst'); &add_help('NHgithook', 'NHgithook.pm'); +&add_help('nhgitset', 'gitsetdocs', '../../DEVEL/nhgitset.pl'); # removed at version 3 @@ -183,7 +184,7 @@ $cmd = catfile(curdir(),'.git','hooks','NHsubst'); print STDERR "Running directories\n" if($opt_v); -# copy directories into .git (right now that's just hooks +# copy directories into .git (right now that's just hooks and nhgitset.pl) my @gitadd = length($gitadddir)?glob("$gitadddir$DS*"):undef; foreach my $dir ( (glob("$srcdir$DS*"), @gitadd) ){ next unless(-d $dir); @@ -209,6 +210,7 @@ foreach my $dir ( (glob("$srcdir$DS*"), @gitadd) ){ &process_override($enddir, "POST"); } } +&do_file_nhgitset(); &check_gitvars; # for variable substitution @@ -219,26 +221,31 @@ if($version_old != $version_new or $opt_f){ exit 0; +# @files: [0] is the name under .git/hooks; others are places to +# check during configuration sub add_help { - my($cmd, $file) = @_; + my($cmd, @files) = @_; - &add_config("nethack.aliashelp.$cmd", $file); + &add_config("nethack.aliashelp.$cmd", $files[0]); # pull out =for nhgitset CMD description... - my $desc = ''; - open my $fh, "<", "$DEVhooksdir/$file"; - if($fh){ - while(<$fh>){ - m/^=for\s+nhgitset\s+\Q$cmd\E\s+(.*)/ && do { - $desc = $1; - last; + my $desc; + foreach my $file (@files){ + open my $fh, "<", "$DEVhooksdir/$file"; + if($fh){ + while(<$fh>){ + m/^=for\s+nhgitset\s+\Q$cmd\E\s+(.*)/ && do { + $desc = $1; + goto found; + } } + close $fh; + } else { + warn "Can't open: '$DEVhooksdir/$file' ($!)\n"; } - close $fh; - } else { - warn "Can't open: '$DEVhooksdir/$file' ($!)\n"; } +found: - if(length $desc){ + if($desc){ &add_config("nethack.aliasdesc.$cmd", $desc); } else { &add_config("nethack.aliasdesc.$cmd", "(no description available)"); @@ -344,13 +351,25 @@ sub do_dir_hooksdir { } } +sub do_file_nhgitset { + my $infile = "DEVEL/nhgitset.pl"; + my $outfile = ".git/hooks/gitsetdocs"; + open IN, "<", $infile or die "Can't open $infile:$!"; + open OUT, ">", $outfile or die "Can't open $outfile:$!"; + my $started; + print IN "die \"DO NOT RUN THIS FILE\n\""; + while(){ + m/^__END__/ && do {$started =1; next}; + print OUT if($started); + } + close OUT; + close IN; +} + +#(can we change the .gitattributes syntax to include a comment character?) +#maybe [comment] attr.c:parse_attr_line +#grr - looks like # is the comment character __END__ -(can we change the .gitattributes syntax to include a comment character?) -maybe [comment] attr.c:parse_attr_line -grr - looks like # is the comment character - - - =head1 NAME nhgitset.pl - Setup program for NetHack git repositories @@ -363,9 +382,10 @@ nhgitset.pl - Setup program for NetHack git repositories =head1 DESCRIPTION -nhgitset.pl installs NetHack-specific setup after a C (or after -changes to the desired configuration, which are installed by re-running -nhgitset.pl). +nhgitset.pl installs NetHack-specific setup after a C or after +changes to the setup, which are installed by re-running nhgitset.pl. If +an upgrade is needed, you will be informed during a C or similar +operation. The following options are available: @@ -445,3 +465,5 @@ nethack.aliasdesc.* 1 Fail. 2 Intervention required. + +=for nhgitset nhgitset NetHack git helper installer