Skip to content

Commit

Permalink
DBIXS_REVISION from git instead of svn
Browse files Browse the repository at this point in the history
The svn version was "static" as in "dead" as of the move to git.
Don't know if the new situation really adds value, but at least
it now has more value than the previous version
  • Loading branch information
Tux committed Jan 17, 2025
1 parent e7543eb commit a13ac69
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 47 deletions.
5 changes: 2 additions & 3 deletions dbixs_rev.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
/* Fri Jul 13 13:32:02 2012 */
/* Mixed revision working copy (15349:15353) */
#define DBIXS_REVISION 15349
/* Fri Jan 17 15:09:59 2025 */
#define DBIXS_REVISION 1698
65 changes: 21 additions & 44 deletions dbixs_rev.pl
Original file line number Diff line number Diff line change
Expand Up @@ -5,49 +5,26 @@

my $dbixs_rev_file = "dbixs_rev.h";

my $is_make_dist;
my $svnversion;

if (is_dbi_svn_dir(".")) {
$svnversion = `svnversion -n`;
}
elsif (is_dbi_svn_dir("..")) {
# presumably we're in a subdirectory because the user is doing a 'make dist'
$svnversion = `svnversion -n ..`;
$is_make_dist = 1;
}
else {
# presumably we're being run by an end-user because their file timestamps
# got messed up
print "Skipping regeneration of $dbixs_rev_file\n";
utime(time(), time(), $dbixs_rev_file); # update modification time
sub skip_update {
my $reason = shift;
print "Skipping regeneration of $dbixs_rev_file: ", $reason, "\n";
utime (time (), time (), $dbixs_rev_file); # update modification time
exit 0;
}

my @warn;
die "Neither current directory nor parent directory are an svn working copy\n"
unless $svnversion and $svnversion =~ m/^\d+/;
push @warn, "Mixed revision working copy ($svnversion:$1)"
if $svnversion =~ s/:(\d+)//;
push @warn, "Code modified since last checkin"
if $svnversion =~ s/[MS]+$//;
warn "$dbixs_rev_file warning: $_\n" for @warn;
die "$0 failed\n" if $is_make_dist && @warn;

write_header($dbixs_rev_file, DBIXS_REVISION => $svnversion, \@warn);

sub write_header {
my ($file, $macro, $version, $comments_ref) = @_;
open my $fh, ">$file" or die "Can't open $file: $!\n";
unshift @$comments_ref, scalar localtime(time);
print $fh "/* $_ */\n" for @$comments_ref;
print $fh "#define $macro $version\n";
close $fh or die "Error closing $file: $!\n";
print "Wrote $macro $version to $file\n";
}

sub is_dbi_svn_dir {
my ($dir) = @_;
return (-d "$dir/.svn" && -f "$dir/MANIFEST.SKIP");
}
} # skip_update

-d ".git" or skip_update ("No git env");

my @n = eval { qx{git log --pretty=oneline} };
@n or skip_update ("Git log was empty");

open my $fh, ">$dbixs_rev_file" or die "Can't open $dbixs_rev_file: $!\n";
print $fh "/* ", scalar localtime, " */\n";

chomp (my @st = qx{git status -s --show-stash});
print $fh "/* $_ */\n" for grep { !m/\b$dbixs_rev_file\b/ } @st;

my $def = "DBIXS_REVISION";
my $rev = scalar @n;
print $fh "#define $def $rev\n";
close $fh or die "Error closing $dbixs_rev_file: $!\n";
print "Wrote $def $rev to $dbixs_rev_file\n";

0 comments on commit a13ac69

Please sign in to comment.