18bd5297cSJürgen Schmidt#************************************************************** 29b02d673Smseidel# 38bd5297cSJürgen Schmidt# Licensed to the Apache Software Foundation (ASF) under one 48bd5297cSJürgen Schmidt# or more contributor license agreements. See the NOTICE file 58bd5297cSJürgen Schmidt# distributed with this work for additional information 68bd5297cSJürgen Schmidt# regarding copyright ownership. The ASF licenses this file 78bd5297cSJürgen Schmidt# to you under the Apache License, Version 2.0 (the 88bd5297cSJürgen Schmidt# "License"); you may not use this file except in compliance 98bd5297cSJürgen Schmidt# with the License. You may obtain a copy of the License at 109b02d673Smseidel# 118bd5297cSJürgen Schmidt# http://www.apache.org/licenses/LICENSE-2.0 129b02d673Smseidel# 138bd5297cSJürgen Schmidt# Unless required by applicable law or agreed to in writing, 148bd5297cSJürgen Schmidt# software distributed under the License is distributed on an 158bd5297cSJürgen Schmidt# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 168bd5297cSJürgen Schmidt# KIND, either express or implied. See the License for the 178bd5297cSJürgen Schmidt# specific language governing permissions and limitations 188bd5297cSJürgen Schmidt# under the License. 199b02d673Smseidel# 208bd5297cSJürgen Schmidt#************************************************************** 218bd5297cSJürgen Schmidt 229b02d673Smseidel 239b02d673Smseidel 24f8d20be8SJim Jagielskipackage RepoRevision; 258bd5297cSJürgen Schmidt 2627a447d8SJim Jagielskisub DetectRevisionIdFromFile ($) 278bd5297cSJürgen Schmidt{ 289b02d673Smseidel my $path = shift; 2927a447d8SJim Jagielski my $id = undef; 3027a447d8SJim Jagielski 3127a447d8SJim Jagielski open( my $fh, '<', $path ) || return undef; 3227a447d8SJim Jagielski $id = <$fh>; 3327a447d8SJim Jagielski close $fh; 3427a447d8SJim Jagielski return $id; 3527a447d8SJim Jagielski} 3627a447d8SJim Jagielski 3727a447d8SJim Jagielskisub DetectRevisionIdFromGit ($) 3827a447d8SJim Jagielski{ 3927a447d8SJim Jagielski my $path = shift; 4027a447d8SJim Jagielski my $id = undef; 4127a447d8SJim Jagielski 4227a447d8SJim Jagielski $id = `git log -1 --pretty=format:%h --abbrev=10`; 4327a447d8SJim Jagielski return $id; 4427a447d8SJim Jagielski} 459b02d673Smseidel 4627a447d8SJim Jagielskisub DetectRevisionIdFromSVN ($) 4727a447d8SJim Jagielski{ 4827a447d8SJim Jagielski my $path = shift; 499b02d673Smseidel my $id = undef; 508bd5297cSJürgen Schmidt 519b02d673Smseidel open my $proc, "cd $path && svn info 2>\&1 |"; 529b02d673Smseidel while (<$proc>) 539b02d673Smseidel { 549b02d673Smseidel if (/svn: E155007:/ || /svn: '.' is not a working copy/) 559b02d673Smseidel { 569b02d673Smseidel # Not in an SVN repository. 5727a447d8SJim Jagielski return undef; 589b02d673Smseidel } 599b02d673Smseidel else 609b02d673Smseidel { 619b02d673Smseidel if (/Last Changed Rev:\s+([0-9]+)/) 629b02d673Smseidel { 639b02d673Smseidel $id = $1; 649b02d673Smseidel last; 659b02d673Smseidel } 669b02d673Smseidel } 679b02d673Smseidel } 689b02d673Smseidel close $proc; 699b02d673Smseidel return $id; 708bd5297cSJürgen Schmidt} 718bd5297cSJürgen Schmidt 72330ba01cSPeter Kovacs 73330ba01cSPeter Kovacssub DetectRevisionId ($) 74330ba01cSPeter Kovacs{ 759b02d673Smseidel my $path = shift; 769b02d673Smseidel my $id = undef; 7727a447d8SJim Jagielski 78*8403f704SJim Jagielski #NOTE: Magic cookie file 'reporevision.lst' created by aoo_srcrelease 79*8403f704SJim Jagielski $id = DetectRevisionIdFromFile ("$ENV{'SOLARENV'}/inc/reporevision.lst"); 80*8403f704SJim Jagielski if ($id) { return $id }; 81*8403f704SJim Jagielski 8227a447d8SJim Jagielski my $NotGit = `cd $path && git rev-parse --git-dir > /dev/null 2>&1`; 8327a447d8SJim Jagielski if (!$NotGit || -d ".git" || -d "$path/.git") 849b02d673Smseidel { 8527a447d8SJim Jagielski $id = DetectRevisionIdFromGit ($path); 869b02d673Smseidel } 879b02d673Smseidel else 889b02d673Smseidel { 8927a447d8SJim Jagielski $id = DetectRevisionIdFromSVN ($path); 909b02d673Smseidel } 91330ba01cSPeter Kovacs 92*8403f704SJim Jagielski if (!$id) { $id = "unknown-rev" }; 939b02d673Smseidel return $id; 94330ba01cSPeter Kovacs} 95330ba01cSPeter Kovacs 968bd5297cSJürgen Schmidt1; 97