[ttssh2-commit] [9759] svnrev.pl に既存リビジョンのチェックを追加

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2022年 2月 20日 (日) 14:03:15 JST


Revision: 9759
          https://osdn.net/projects/ttssh2/scm/svn/commits/9759
Author:   nmaya
Date:     2022-02-20 14:03:14 +0900 (Sun, 20 Feb 2022)
Log Message:
-----------
svnrev.pl に既存リビジョンのチェックを追加

既存のヘッダファイルとリビジョンが変わっているときだけヘッダファイルを出力するようにした
ttssh2-dev 257, 265

Modified Paths:
--------------
    trunk/svnrev_perl/svnrev.pl

-------------- next part --------------
Modified: trunk/svnrev_perl/svnrev.pl
===================================================================
--- trunk/svnrev_perl/svnrev.pl	2022-02-19 15:40:13 UTC (rev 9758)
+++ trunk/svnrev_perl/svnrev.pl	2022-02-20 05:03:14 UTC (rev 9759)
@@ -18,7 +18,11 @@
 my $verbose = 0;
 my $script_name = $0;
 my $header = "This file was generated by svnrev_perl/svnrev.pl";
-my %svninfo = ();
+my %svninfo = (
+	name => '',
+	release => 0,
+	Revision => ''
+	);
 
 sub read_toolinfo {
 	my $info = "toolinfo.txt";
@@ -145,6 +149,28 @@
 	close($FD);
 }
 
+sub read_revision_from_header()
+{
+	my ($out_header) = @_;
+
+	# ヘッダーファイルがない場合
+	if (! -f $out_header) {
+		return '';
+	}
+
+	open FH, '<', $out_header || die "error open $out_header";
+	while (<FH>) {
+		if (/#define SVNVERSION (\d+)/) {
+			close FH;
+			return $1;
+		}
+	}
+	close FH;
+
+	# パターンマッチしない場合
+	return '';
+}
+
 &search_svn();
 &search_git();
 &read_toolinfo();
@@ -242,19 +268,23 @@
 	# do not use VCS
 }
 
-if ($svninfo{'release'} != 1) {
-	$svninfo{'release'} = 0;
+if ($verbose != 0) {
+	&dump_info(%svninfo);
 }
 
+# read revision from out header file
+my $header_revision = &read_revision_from_header($out_header);
 if ($verbose != 0) {
-	&dump_info(%svninfo);
+	print "Revision of header is '$header_revision'\n";
 }
 
 # output for source(C,C++) header
-if ($verbose != 0) {
-	print "write '$out_header'\n";
+if ($header_revision ne $svninfo{'Revision'}) {
+	if ($verbose != 0) {
+		print "write '$out_header'\n";
+	}
+	write_info_header($out_header, %svninfo);
 }
-write_info_header($out_header, %svninfo);
 
 # output for bat file
 if ($verbose != 0) {


ttssh2-commit メーリングリストの案内
Back to archive index