18bd5297cSJürgen Schmidt#************************************************************** 203b1550eSmseidel# 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 1003b1550eSmseidel# 118bd5297cSJürgen Schmidt# http://www.apache.org/licenses/LICENSE-2.0 1203b1550eSmseidel# 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. 1903b1550eSmseidel# 208bd5297cSJürgen Schmidt#************************************************************** 218bd5297cSJürgen Schmidt 2203b1550eSmseidel 2303b1550eSmseidel 24eb479a10SJim Jagielskipackage RepoRevision; 258bd5297cSJürgen Schmidt 260c6d6194SJim Jagielskisub DetectRevisionIdFromFile ($) 278bd5297cSJürgen Schmidt{ 2803b1550eSmseidel my $path = shift; 290c6d6194SJim Jagielski my $id = undef; 300c6d6194SJim Jagielski 310c6d6194SJim Jagielski open( my $fh, '<', $path ) || return undef; 320c6d6194SJim Jagielski $id = <$fh>; 330c6d6194SJim Jagielski close $fh; 340c6d6194SJim Jagielski return $id; 350c6d6194SJim Jagielski} 360c6d6194SJim Jagielski 370c6d6194SJim Jagielskisub DetectRevisionIdFromGit ($) 380c6d6194SJim Jagielski{ 390c6d6194SJim Jagielski my $path = shift; 400c6d6194SJim Jagielski my $id = undef; 410c6d6194SJim Jagielski 420c6d6194SJim Jagielski $id = `git log -1 --pretty=format:%h --abbrev=10`; 430c6d6194SJim Jagielski return $id; 440c6d6194SJim Jagielski} 4503b1550eSmseidel 460c6d6194SJim Jagielskisub DetectRevisionIdFromSVN ($) 470c6d6194SJim Jagielski{ 480c6d6194SJim Jagielski my $path = shift; 4903b1550eSmseidel my $id = undef; 508bd5297cSJürgen Schmidt 5103b1550eSmseidel open my $proc, "cd $path && svn info 2>\&1 |"; 5203b1550eSmseidel while (<$proc>) 5303b1550eSmseidel { 5403b1550eSmseidel if (/svn: E155007:/ || /svn: '.' is not a working copy/) 5503b1550eSmseidel { 5603b1550eSmseidel # Not in an SVN repository. 570c6d6194SJim Jagielski return undef; 5803b1550eSmseidel } 5903b1550eSmseidel else 6003b1550eSmseidel { 6103b1550eSmseidel if (/Last Changed Rev:\s+([0-9]+)/) 6203b1550eSmseidel { 6303b1550eSmseidel $id = $1; 6403b1550eSmseidel last; 6503b1550eSmseidel } 6603b1550eSmseidel } 6703b1550eSmseidel } 6803b1550eSmseidel close $proc; 6903b1550eSmseidel return $id; 708bd5297cSJürgen Schmidt} 718bd5297cSJürgen Schmidt 72a530506fSPeter Kovacs 73a530506fSPeter Kovacssub DetectRevisionId ($) 74a530506fSPeter Kovacs{ 7503b1550eSmseidel my $path = shift; 7603b1550eSmseidel my $id = undef; 770c6d6194SJim Jagielski 78*67baec14SJim Jagielski #NOTE: Magic cookie file 'reporevision.lst' created by aoo_srcrelease 79*67baec14SJim Jagielski $id = DetectRevisionIdFromFile ("$ENV{'SOLARENV'}/inc/reporevision.lst"); 80*67baec14SJim Jagielski if ($id) { return $id }; 81*67baec14SJim Jagielski 820c6d6194SJim Jagielski my $NotGit = `cd $path && git rev-parse --git-dir > /dev/null 2>&1`; 830c6d6194SJim Jagielski if (!$NotGit || -d ".git" || -d "$path/.git") 8403b1550eSmseidel { 850c6d6194SJim Jagielski $id = DetectRevisionIdFromGit ($path); 8603b1550eSmseidel } 8703b1550eSmseidel else 8803b1550eSmseidel { 890c6d6194SJim Jagielski $id = DetectRevisionIdFromSVN ($path); 9003b1550eSmseidel } 91a530506fSPeter Kovacs 92*67baec14SJim Jagielski if (!$id) { $id = "unknown-rev" }; 9303b1550eSmseidel return $id; 94a530506fSPeter Kovacs} 95a530506fSPeter Kovacs 968bd5297cSJürgen Schmidt1; 97