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 26*27a447d8SJim Jagielskisub DetectRevisionIdFromFile ($) 278bd5297cSJürgen Schmidt{ 289b02d673Smseidel my $path = shift; 29*27a447d8SJim Jagielski my $id = undef; 30*27a447d8SJim Jagielski 31*27a447d8SJim Jagielski open( my $fh, '<', $path ) || return undef; 32*27a447d8SJim Jagielski $id = <$fh>; 33*27a447d8SJim Jagielski close $fh; 34*27a447d8SJim Jagielski return $id; 35*27a447d8SJim Jagielski} 36*27a447d8SJim Jagielski 37*27a447d8SJim Jagielskisub DetectRevisionIdFromGit ($) 38*27a447d8SJim Jagielski{ 39*27a447d8SJim Jagielski my $path = shift; 40*27a447d8SJim Jagielski my $id = undef; 41*27a447d8SJim Jagielski 42*27a447d8SJim Jagielski $id = `git log -1 --pretty=format:%h --abbrev=10`; 43*27a447d8SJim Jagielski return $id; 44*27a447d8SJim Jagielski} 459b02d673Smseidel 46*27a447d8SJim Jagielskisub DetectRevisionIdFromSVN ($) 47*27a447d8SJim Jagielski{ 48*27a447d8SJim 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. 57*27a447d8SJim 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; 77*27a447d8SJim Jagielski 78*27a447d8SJim Jagielski my $NotGit = `cd $path && git rev-parse --git-dir > /dev/null 2>&1`; 79*27a447d8SJim Jagielski if (!$NotGit || -d ".git" || -d "$path/.git") 809b02d673Smseidel { 81*27a447d8SJim Jagielski $id = DetectRevisionIdFromGit ($path); 829b02d673Smseidel } 839b02d673Smseidel else 849b02d673Smseidel { 85*27a447d8SJim Jagielski $id = DetectRevisionIdFromSVN ($path); 869b02d673Smseidel } 87330ba01cSPeter Kovacs 88*27a447d8SJim Jagielski if (!$id) 89*27a447d8SJim Jagielski { 90*27a447d8SJim Jagielski #NOTE: Magic cookie file 'reporevision.lst' created by aoo_srcrelease 91*27a447d8SJim Jagielski $id = DetectRevisionIdFromFile ("$ENV{'SOLARENV'}/inc/reporevision.lst"); 92*27a447d8SJim Jagielski if (!$id) { $id = "unknown-rev" }; 93*27a447d8SJim Jagielski } 949b02d673Smseidel return $id; 95330ba01cSPeter Kovacs} 96330ba01cSPeter Kovacs 978bd5297cSJürgen Schmidt1; 98