1 #!/bin/sh |
1 #!/bin/sh |
2 |
2 |
3 # |
3 # |
4 # Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. |
4 # Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. |
5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
6 # |
6 # |
7 # This code is free software; you can redistribute it and/or modify it |
7 # This code is free software; you can redistribute it and/or modify it |
8 # under the terms of the GNU General Public License version 2 only, as |
8 # under the terms of the GNU General Public License version 2 only, as |
9 # published by the Free Software Foundation. Oracle designates this |
9 # published by the Free Software Foundation. Oracle designates this |
23 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
23 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
24 # or visit www.oracle.com if you need additional information or have any |
24 # or visit www.oracle.com if you need additional information or have any |
25 # questions. |
25 # questions. |
26 # |
26 # |
27 |
27 |
28 # Get clones of all nested repositories |
28 to_stderr() { |
29 sh ./common/bin/hgforest.sh clone "$@" || exit 1 |
29 echo "$@" >&2 |
|
30 } |
|
31 |
|
32 error() { |
|
33 to_stderr "ERROR: $1" |
|
34 exit ${2:-126} |
|
35 } |
|
36 |
|
37 warning() { |
|
38 to_stderr "WARNING: $1" |
|
39 } |
|
40 |
|
41 version_field() { |
|
42 # rev is typically omitted for minor and major releases |
|
43 field=`echo ${1}.0 | cut -f ${2} -d .` |
|
44 if expr 1 + $field >/dev/null 2> /dev/null; then |
|
45 echo $field |
|
46 else |
|
47 echo -1 |
|
48 fi |
|
49 } |
|
50 |
|
51 # Version check |
|
52 |
|
53 # required |
|
54 reqdmajor=1 |
|
55 reqdminor=4 |
|
56 reqdrev=0 |
|
57 |
|
58 # requested |
|
59 rqstmajor=2 |
|
60 rqstminor=6 |
|
61 rqstrev=3 |
|
62 |
|
63 |
|
64 # installed |
|
65 hgwhere="`command -v hg`" |
|
66 if [ "x$hgwhere" = "x" ]; then |
|
67 error "Could not locate Mercurial command" |
|
68 fi |
|
69 |
|
70 hgversion="`hg --version 2> /dev/null | sed -n -e 's@^Mercurial Distributed SCM (version \([^+]*\).*)\$@\1@p'`" |
|
71 if [ "x${hgversion}" = "x" ] ; then |
|
72 error "Could not determine Mercurial version of $hgwhere" |
|
73 fi |
|
74 |
|
75 hgmajor="`version_field $hgversion 1`" |
|
76 hgminor="`version_field $hgversion 2`" |
|
77 hgrev="`version_field $hgversion 3`" |
|
78 |
|
79 if [ $hgmajor -eq -1 -o $hgminor -eq -1 -o $hgrev -eq -1 ] ; then |
|
80 error "Could not determine Mercurial version of $hgwhere from \"$hgversion\"" |
|
81 fi |
|
82 |
|
83 |
|
84 # Require |
|
85 if [ $hgmajor -lt $reqdmajor -o \( $hgmajor -eq $reqdmajor -a $hgminor -lt $reqdminor \) -o \( $hgmajor -eq $reqdmajor -a $hgminor -eq $reqdminor -a $hgrev -lt $reqdrev \) ] ; then |
|
86 error "Mercurial version $reqdmajor.$reqdminor.$reqdrev or later is required. $hgwhere is version $hgversion" |
|
87 fi |
|
88 |
|
89 |
|
90 # Request |
|
91 if [ $hgmajor -lt $rqstmajor -o \( $hgmajor -eq $rqstmajor -a $hgminor -lt $rqstminor \) -o \( $hgmajor -eq $rqstmajor -a $hgminor -eq $rqstminor -a $hgrev -lt $rqstrev \) ] ; then |
|
92 warning "Mercurial version $rqstmajor.$rqstminor.$rqstrev or later is recommended. $hgwhere is version $hgversion" |
|
93 fi |
|
94 |
|
95 |
|
96 # Get clones of all absent nested repositories (harmless if already exist) |
|
97 sh ./common/bin/hgforest.sh clone "$@" || exit $? |
30 |
98 |
31 # Update all existing repositories to the latest sources |
99 # Update all existing repositories to the latest sources |
32 sh ./common/bin/hgforest.sh pull -u |
100 sh ./common/bin/hgforest.sh pull -u |
33 |
|